Python:访问原始异常的异常消息
我有以下两项职能:Python:访问原始异常的异常消息,python,exception,Python,Exception,我有以下两项职能: >>> def spam(): ... raise ValueError('hello') ... >>> def catch(): ... try: ... spam() ... except ValueError: ... raise ValueError('test') 尝试捕获第二个ValueError异常工作正常,并打印异常的错误消息: >>> try:
>>> def spam():
... raise ValueError('hello')
...
>>> def catch():
... try:
... spam()
... except ValueError:
... raise ValueError('test')
尝试捕获第二个ValueError
异常工作正常,并打印异常的错误消息:
>>> try:
... catch()
... except ValueError as e:
... print(e)
...
test
但是,是否有任何方法可以访问原始异常的错误消息(即'hello'
)?我知道我可以打印完整的回溯:
>>> try:
... catch()
... except ValueError as e:
... import traceback
... print(traceback.format_exc())
...
Traceback (most recent call last):
File "<stdin>", line 3, in catch
File "<stdin>", line 2, in spam
ValueError: hello
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "<stdin>", line 5, in catch
ValueError: test
>>试试:
... 捕获()
... 除ValueError为e外:
... 导入回溯
... 打印(traceback.format_exc())
...
回溯(最近一次呼叫最后一次):
catch中第3行的文件“”
垃圾邮件中第2行的文件“”
ValueError:你好
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“”,第2行,在
catch中第5行的文件“”
ValueError:测试
但我并不想解析该字符串中的
hello
。有没有一种方法可以访问异常列表及其各自的消息,我只需从中获取第一条消息?解决了这个问题:原始异常可以通过e.\uuuuuuuu原因\uuuuuu运行什么Python版本?使用Python 3.4。除非异常是通过引发的。。。从…
语句中,原始异常存储在\uuuuuuuuuuuuuuuuuuuuuuuuuuuuu上下文中,而不是\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。因此,使用print(e.\uuuuu cause\uuuuu或e.\uuuu context\uuuuuu)
应该是一种方法。有没有不访问私有属性的方法呢?@simpleuser Python没有私有属性。您可能将它们误认为是名称损坏的属性(格式为\uu attr
:两个前导下划线,没有尾随),但两者都不是。如果是,则必须将其称为e.\u Exception\uuuu cause\uuuu
,这是Python拥有的最私密的访问权限。@simpleuser如何使用str(e)来获取错误消息str(ValueError(“某些错误消息”))
返回“某些错误消息”。