🐍Python | Django

[Python] Exception 추적

이줭 2022. 5. 23. 17:16
728x90

예외처리

예외가 발생했을 때, 아래와 같이 처리할 수 있다.

try:
    ...
except:
    ...
else:
    ...
finally:
    ...

위와 같이 try, except, else, finally 블록을 정의할 수 있고, try블록에서 예외가 발생하면 except블록에서 처리할 수 있다. else블록의 경우 try블록 하위에서 에러가 발생하지 않았을 때 실행되고, finally블록은 예외 발생 여부와 상관없이 실행된다.

Stack trace 출력

예외가 발생하더라도 프로그램이 종료되는 것을 막기위해 아래와 같이 로그를 출력하고, 무시하도록 처리하였다고 해보자.

try:
    A = 1
    value = A[0]
except:
    print("Index Error")

예외가 발생하더라도 프로그램이 종료되지는 않지만, 예외가 발생 위치는 알 수 없다.

 

이러한 경우 tracebackprint_exc()를 사용하면 프로그램을 종료시키지 않고, 예외에 대한 자세한 로그를 출력할 수 있다. 디버깅이 어려운 환경에서 해당 함수를 통하여 몇 번째 라인에서 에러가 발생했는지 확인할 수 있다. 👍

import traceback

A = 1
try:
    value = A[0]
except:
    traceback.print_exc()
finally:
    print('Finally Block')
    
'''
--------------출력--------------
Traceback (most recent call last):
  File "/home/devjy/traceback_ex.py", line 5, in <module>
    value = A[0]
TypeError: 'int' object is not subscriptable

Finally Block
--------------------------------
'''

 

참고 : https://codechacha.com/ko/python-stack-trace/

728x90

'🐍Python | Django' 카테고리의 다른 글

[Python] itertools  (0) 2022.05.26
[Python] enumerate()  (0) 2022.05.25
[Python] Duck Typing?  (0) 2022.05.22
[Python] Comprehension?  (0) 2022.05.20
[Python] Type Check - type(), isinstance()  (0) 2022.05.18