대부분의 예외가 'Error'로 끝나는 이유
파이썬에서 ZeroDivisionError, NameError, TypeError처럼 대부분의 예외 클래스 이름이 'Error'로 끝나는 것을 쉽게 발견할 수 있습니다. 예외란 결국 프로그램에서 발생하는 오류 상황을 의미하기 때문에, 이름에 'Error'를 붙여 그 성격을 명확하게 드러내는 것입니다.
'오류'와 '예외'의 구분
엄밀한 의미에서 파이썬에서 말하는 오류(Error)는 문법 오류(syntax error)를 가리키며, 실행 중에 발생하는 오류는 예외(Exception)라고 부릅니다.
그런데 흥미롭게도 파이썬에서는 클래스 이름에 'class'라는 단어를 포함하지 않고, 변수 이름 끝에 'variable'을 붙이지도 않습니다. 마찬가지로 예외 이름이 반드시 'exception'으로 끝나야 할 규칙도 없는 것입니다. 즉, 네이밍은 언어 설계자의 관례와 판단에 따른 결과입니다.
모든 예외가 오류는 아니다
중요한 사실은 모든 예외가 오류는 아니라는 점입니다. 다음 예외들은 오류가 아닌 예외입니다.
SystemExit— 프로그램 종료 요청KeyboardInterrupt— 사용자가 Ctrl+C로 실행을 중단StopIteration— 반복자(iterator)가 더 이상 반환할 값이 없음GeneratorExit— 제너레이터가 종료될 때 발생
또한 실제로 Warning이라는 예외 클래스를 상속받는 여러 경고성 예외들(DeprecationWarning, UserWarning 등)도 존재합니다. 이처럼 예외는 단순한 오류 보고를 넘어 프로그램의 흐름 제어나 알림 용도로도 활용됩니다.
'Error'라는 이름을 붙인 실용적인 이유
예외 이름에 'Error'를 붙이는 데에는 실용적인 동기도 있습니다. 'Error'는 'Exception'보다 글자 수가 짧아 코드 작성 시 몇 글자를 절약할 수 있으면서도, 의미 손실 없이 직관적으로 전달됩니다. 예를 들어 ValueError는 ValueException보다 간결하면서도 같은 의미를 담고 있습니다.
정리
파이썬 예외 이름이 'Error'로 끝나는 것은 예외가 대체로 오류 상황을 나타내기 때문이며, 동시에 짧은 이름으로 코드 가독성과 편의성을 높이려는 설계 선택입니다. 다만 SystemExit나 KeyboardInterrupt처럼 오류가 아닌 예외도 존재하므로, '예외 = 오류'라는 공식은 항상 성립하지 않는다는 점을 기억해 두면 좋습니다.