繁体   English   中英

如何确保我总是以安全的方式收到Python中的异常消息?

[英]How to make sure that I always get the message of an exception in Python in a safe way?

在Java中,获取异常消息与始终调用特定方法一样容易。 但是在Python中,这似乎是不可能的。 有时这样做可以起作用:

try:
    # Code
    pass
except Exception as e:
    print(e.message)

但是有时捕获这样的异常最终会引发另一个异常,因为message属性不存在。 具有讽刺意味的悲伤。 尝试控制错误会产生另一个错误...

有时这样做可以起作用:

print(e.msg)

但是有时它还会引发缺少属性异常。

有时这也可以:

print(str(e))

但是有时它会打印一个空字符串,因此根本没用。

我什至听说它取决于您使用的库以及具体的Exception实现。 对我来说那真是愚蠢。 如果我不知道打印错误消息所具有的属性是什么,该如何处理打印发生的错误?

但是有时它会打印一个空字符串,因此根本没用。

是的,当有人在没有消息的情况下引发异常时,就会发生这种情况。 (您正在使用的lib的)怪人作者。

通常,您可以使用repr ,它应该是明确的,并且如果未覆盖,则至少包含有关异常类型的信息:

try:
    0/0
except Exception as exc:
    print(repr(exc))
    raise

如果您需要整个回溯,则可以使用

import traceback
try:
    0/0
except Exception:
    print(traceback.format_exc())
    raise

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM