2024-04-26 00:17:56 发布
网友
如何获取Python中引发的异常的名称
例如:
try: foo = bar except Exception as exception: name_of_exception = ??? assert name_of_exception == 'NameError' print "Failed with exception [%s]" % name_of_exception
例如,我正在捕获多个(或所有)异常,并希望在错误消息中打印该异常的名称
这是可行的,但似乎必须有更简单、更直接的方法
try: foo = bar except Exception as exception: assert repr(exception) == '''NameError("name 'bar' is not defined",)''' name = repr(exception).split('(')[0] assert name == 'NameError'
您也可以使用sys.exc_info()exc_info()返回3个值:类型、值、回溯。关于文件:https://docs.python.org/3/library/sys.html#sys.exc_info
sys.exc_info()
exc_info()
import sys try: foo = bar except Exception: exc_type, value, traceback = sys.exc_info() assert exc_type.__name__ == 'NameError' print "Failed with exception [%s]" % exc_type.__name__
以下是获取异常类名称的几种不同方法:
type(exception).__name__
exception.__class__.__name__
exception.__class__.__qualname__
try: foo = bar except Exception as exception: assert type(exception).__name__ == 'NameError' assert exception.__class__.__name__ == 'NameError' assert exception.__class__.__qualname__ == 'NameError'
这是可行的,但似乎必须有更简单、更直接的方法
您也可以使用
sys.exc_info()
exc_info()
返回3个值:类型、值、回溯。关于文件:https://docs.python.org/3/library/sys.html#sys.exc_info以下是获取异常类名称的几种不同方法:
type(exception).__name__
exception.__class__.__name__
exception.__class__.__qualname__
例如:
相关问题 更多 >
编程相关推荐