예외 개체가 속한 클래스의 이름을 가져옵니다.
e.__class__.__name__
print_exc () 함수를 사용하면 모든 오류 메시지에 대한 필수 정보 인 스택 추적을 인쇄합니다.
이처럼 :
from traceback import print_exc
class CustomException(Exception): pass
try:
raise CustomException("hi")
except Exception, e:
print 'type is:', e.__class__.__name__
print_exc()
# print "exception happened!"
다음과 같이 출력됩니다 :
type is: CustomException
Traceback (most recent call last):
File "exc.py", line 7, in <module>
raise CustomException("hi")
CustomException: hi
그리고 인쇄 및 분석 후 코드는 예외를 처리하지 않고 다음을 실행하기로 결정할 수 있습니다 raise
.
from traceback import print_exc
class CustomException(Exception): pass
def calculate():
raise CustomException("hi")
try:
calculate()
except Exception, e:
if e.__class__ == CustomException:
print 'special case of', e.__class__.__name__, 'not interfering'
raise
print "handling exception"
산출:
special case of CustomException not interfering
그리고 인터프리터는 예외를 인쇄합니다.
Traceback (most recent call last):
File "test.py", line 9, in <module>
calculate()
File "test.py", line 6, in calculate
raise CustomException("hi")
__main__.CustomException: hi
raise
원래 예외 후에 계속해서 호출 스택을 계속 전파합니다. ( 가능한 함정에주의하십시오 ) 새로운 예외를 제기하면 새로운 (더 짧은) 스택 추적이 필요합니다.
from traceback import print_exc
class CustomException(Exception): pass
def calculate():
raise CustomException("hi")
try:
calculate()
except Exception, e:
if e.__class__ == CustomException:
print 'special case of', e.__class__.__name__, 'not interfering'
#raise CustomException(e.message)
raise e
print "handling exception"
산출:
special case of CustomException not interfering
Traceback (most recent call last):
File "test.py", line 13, in <module>
raise CustomException(e.message)
__main__.CustomException: hi
역 추적 에 원래 예외의 원점 인 calculate()
line 함수가 포함되지 않은 방법에 주목하십시오 .9
e
except:
(베어없이raise
)를 제외하고 어쩌면 바람직하게는 다음 프로그램에 한 번합니다.