역추적을 사용하여 오류 찾기

완료됨

Python의 예외는 언어의 핵심 기능입니다. 오류를 생성하는 항목이 기능으로 강조 표시된 것을 읽게 되면 놀랄 수 있습니다. 강력한 소프트웨어 도구가 역추적(오류가 어떻게 시작되고 종료되었는지 나타내는 여러 줄의 텍스트)과 충돌하지 않는 것처럼 보이기 때문입니다.

그러나 예외는 설명 오류 메시지를 생성하여 의사 결정에 도움이 되므로 유용합니다. 예상한 문제와 예기치 않은 문제 모두를 처리하는 데 도움이 될 수 있습니다.

역추적

역추적은 처리되지 않은 오류의 시작(과 끝)을 가리킬 수 있는 텍스트 본문입니다. 역추적의 구성 요소를 이해하면 오류를 수정하거나 제대로 작동하지 않는 프로그램을 디버깅할 때 더 효과적으로 작업할 수 있습니다.

Python에서 처음 예외가 발생하면 오류를 표시하지 않음으로써 오류를 방지하려고 할 수 있습니다. 프로그램에서 처리되지 않은 오류가 발생하면 역추적이 출력으로 표시됩니다. 이 모듈에서 역추적이 유용함을 보게 될 것입니다. 오류가 표시되지 않거나 유용한 정보만 표시하도록 오류를 올바르게 처리하는 여러 방법이 있습니다.

Python 대화형 세션을 열고 존재하지 않는 파일을 열어 봅니다.

open("/path/to/mars.jpg")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: '/path/to/mars.jpg'

해당 출력에는 몇 가지 주요 부분이 있습니다. 먼저 역추적에서 출력 순서를 언급합니다. 그런 다음 입력의 첫 번째 줄에 파일이 stdin(대화형 터미널의 입력)임을 알려 줍니다. 오류는 FileNotFoundError(예외 이름)입니다. 즉, 파일이 존재하지 않거나 해당 파일의 디렉터리가 존재하지 않음을 의미합니다.

정보가 많습니다. 줄 1이 의미 있는 이유 또는 Errno 2의 의미를 이해하기 어려울 수 있습니다.

Visual Studio Code에서 원하는 디렉터리를 열고 open.py라는 Python 파일을 만듭니다.

Screenshot showing the creation of a new Python file in Visual Studio Code.

파일에 다음 콘텐츠를 추가하고 저장합니다.

def main():
    open("/path/to/mars.jpg")

if __name__ == '__main__':
    main()

이전과 마찬가지로 존재하지 않는 파일을 여는 단일 main() 함수입니다. 끝 부분에서 해당 함수는 터미널에서 호출될 때 인터프리터에게 함수 main()을 실행하도록 지시하는 Python 도우미를 사용합니다. Python을 사용하여 Bash 터미널에서 명령을 실행하고 오류 메시지 확인

python3 open.py
Traceback (most recent call last):
  File "/tmp/open.py", line 5, in <module>
    main()
  File "/tmp/open.py", line 2, in main
    open("/path/to/mars.jpg")
FileNotFoundError: [Errno 2] No such file or directory: '/path/to/mars.jpg'

이제 오류 출력이 더 타당합니다. 경로는 open.py라는 단일 파일을 가리킵니다. 출력은 오류가 main()에 대한 호출을 포함하는 줄 5에서 시작된다고 언급합니다. 다음으로 출력은 open() 함수 호출의 줄 2 오류를 따릅니다. 마지막으로 FileNotFoundError는 파일 또는 디렉터리가 존재하지 않음을 다시 보고합니다.

역추적은 거의 항상 다음 정보를 포함합니다.

  • 모든 함수에 대한 모든 호출과 관련된 모든 파일 경로
  • 모든 파일 경로와 연결된 줄 번호
  • 예외 생성과 관련된 함수, 메서드 또는 클래스의 이름
  • 발생된 예외의 이름