더북(TheBook)

디버깅을 할 때 오류를 더 빠르게 찾아내려면 오류의 종류를 구분하는 것이 좋다.

  • 구문 오류(syntax error)는 인터프리터가 소스 코드를 바이트 코드로 변환하면서 발견된다. 구문 오류는 프로그램의 구조에서 잘못된 부분을 알려준다. 예: def 문의 끝에 콜론(:)을 생략하면 SyntaxError: invalid syntax 메시지가 생성된다.
  • 런타임 오류(runtime error)는 프로그램을 실행하는 도중에 무언가 잘못된 것이 있을 때 인터프리터가 생성한다. 런타임 오류 메시지는 대부분 오류가 발생한 위치, 실행 중인 함수 같은 정보를 담고 있다. 예: 무한 재귀는 maximum recursion depth exceeded(최대 재귀 깊이 초과)라는 런타임 오류를 일으키게 된다.
  • 의미 오류(semantic error)는 프로그램이 오류 메시지를 내지 않고 실행되지만, 올바르게 동작하지는 않는 상태를 말한다. 예: 표현식이 예상한 대로 동작하지 않고 올바르지 않은 결과를 내는 경우.

디버깅의 첫 번째 단계는 처리하려는 오류가 어떤 종류인지 알아내는 것이다. 다음 절은 오류 유형에 따라 나눴지만, 몇 가지 기법은 둘 이상의 상황에도 응용할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.