오류(Error)와 예외(Exception)의 차이
프로그래밍에서 오류(error)는 주로 프로그램이 실행되기 전, 즉 컴파일 시점에 발생하는 문제를 의미하며, 대표적인 예가 바로 구문 오류(SyntaxError)입니다.
예를 들어 다음 코드처럼 문자열 리터럴에 값을 할당하려고 하면 구문 오류가 발생합니다.
'abe' = 5
출력 결과:
SyntaxError: can't assign to literal
반면, 문장이나 표현식이 문법적으로 올바르더라도 실제로 실행을 시도하는 순간 오류가 발생할 수 있습니다. 이렇게 실행 도중에 감지되는 오류를 '예외(exception)'라고 부르며, 예외는 반드시 치명적인 것은 아닙니다. 다만 예외를 적절하게 처리하지 않으면 코드를 실행할 때 오류 메시지가 화면에 출력됩니다.
파이썬은 예외를 어떻게 다룰까?
일반적으로 파이썬 스크립트가 스스로 처리할 수 없는 오류를 만나면 예외를 발생(raise)시키고, 이에 해당하는 예외 객체(exception object)를 생성합니다.
보통 스크립트는 발생한 예외를 즉시 처리하지만, 처리하지 못할 경우 프로그램은 종료되면서 오류의 추적 정보(traceback)와 세부 내용을 함께 출력합니다. 아래 예제를 살펴보겠습니다.
abe < 5
출력 결과:
Traceback (most recent call last):
File "C:/Users/TutorialsPoint1/~.py", line 1,
in <module>
abe < 5
NameError: name 'abe' is not defined
위 예제에서는 변수 abe가 정의되어 있지 않아 NameError가 발생했습니다. 파이썬은 traceback을 통해 어떤 파일의 몇 번째 줄에서 문제가 발생했는지 상세히 알려주므로, 디버깅에 큰 도움이 됩니다.
예외 처리가 필요한 이유
예외는 프로그램에서 발생하는 오류나 특수한 상황을 처리하는 데 매우 편리한 도구입니다. 작성한 코드가 실행 중에 오류를 일으킬 가능성이 있다고 판단되면, try-except 문과 같은 예외 처리 기법을 활용해야 합니다. 이를 통해 프로그램이 갑작스럽게 종료되는 것을 막고, 오류 상황에 유연하게 대응하며 전체적인 안정성을 높일 수 있습니다.