在Python中获取异常值
如果我有这段代码:
try:
some_method()
except Exception, e:
我该怎么获取这个异常的值(我指的是它的字符串表示)呢?
7 个回答
50
虽然我知道这个问题已经有点老了,但我想推荐使用traceback
模块来处理异常的输出。
你可以用traceback.print_exc()
来把当前的异常信息打印到标准错误输出,就像如果这个异常没有被处理一样会打印出来;或者用traceback.format_exc()
来获取同样的异常信息,但以字符串的形式。如果你想限制输出内容,或者把打印的内容重定向到一个文件对象,也可以给这两个函数传递不同的参数。
496
使用 str
方法
try:
some_method()
except Exception as e:
s = str(e)
另外,大多数异常类都有一个 args
属性。通常情况下,args[0]
会是一个错误信息。
需要注意的是,如果没有错误信息,单纯使用 str
方法会返回一个空字符串,而使用 repr
方法(正如 pyfunc 推荐的那样)至少会显示出异常的类型。我的看法是,如果你是在打印这个信息,那是给最终用户看的,他们并不关心异常的类型,只想要一个错误信息。
这实际上取决于你处理的异常类型以及它是如何被创建的。你有没有特别想讨论的内容呢?