Python - Stack trace 출력하는 방법 (traceback)

traceback을 이용하여 에러에 대한 Strack trace 출력 방법을 소개합니다.

문제 상황

아래 코드는 integer 객체를 배열로 접근하여 Exception이 발생하고 프로그램이 종료됩니다.

A = 10
value = A[5]

Output:

Traceback (most recent call last):
  File "/home/js/IdeaProjects/python-ex/stacktrace.py", line 11, in <module>
    value = A[5]
TypeError: 'int' object is not subscriptable

프로그램이 종료되는 것은 막고 싶어 try-except로 로그만 출력하고, 에러는 무시하도록 다음과 같이 구현했습니다. 하지만 단순히 로그만 출력되어, 어떤 에러가 발생했는지, 어떤 코드에서 에러가 발생했는지 확인이 어렵습니다.

try:
    A = 10
    value = A[5]
except:
    print("Ignore exception")

Output:

Ignore exception

traceback으로 Stack trace 출력

traceback의 print_exc()는 에러에 대한 Strack trace를 출력합니다.

프로그램을 종료시키지 않고, 에러에 대한 자세한 로그를 출력할 수 있습니다.

import traceback

A = 10
try:
    value = A[5]
except:
    traceback.print_exc()

print("Program is not terminated")

Output:

Traceback (most recent call last):
  File "/home/js/IdeaProjects/python-ex/stacktrace.py", line 5, in <module>
    value = A[5]
TypeError: 'int' object is not subscriptable

Program is not terminated
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha