【问题标题】:How to get the exception type when printing an exception? [duplicate]打印异常时如何获取异常类型? [复制]
【发布时间】:2019-09-22 07:22:24
【问题描述】:

如果我有代码:

try:
  1 / 0

except Exception as e:
  my_error = e
  #e is sent to the application user end

它返回e 的文本,但也不返回异常名称。在我需要此代码的情况下,控制台当时未打开,并且在捕获异常时将其发送到用户端。在发生异常的那一刻,我可以看到错误文本,但是如何获取名称。

在示例的情况下,我希望 my_error 成为

ZeroDivisionError: #error text

而不仅仅是my_error

#error text

【问题讨论】:

  • type(e).__name__ 用于异常名称。 str(e) 用于消息。随心所欲地把它们放在一起。

标签: python python-3.x exception


【解决方案1】:

在异常块中使用下面的代码。

e.__class__.__name__

【讨论】:

  • 虽然此代码 sn-p 可能是解决方案,但 including an explanation 确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
  • @nircraft 感谢您的建议。将添加详细信息。
【解决方案2】:

如果您只查看错误的描述,那么您正在查看。

 err_str = str(e)

但是,如果您还在寻找异常名称和描述,那么您正在寻找。

 err_str = repr(e)

【讨论】:

  • 只想补充一点,如果你想要异常名称和文本,你可以改用repr(e)str(e) == 'division by zero', repr(e)=="ZeroDivisionError('division by zero',)"
  • 非常感谢!更新了我的答案以反映您的评论
猜你喜欢
  • 2019-09-26
  • 2014-12-21
  • 2017-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-08
  • 2021-05-31
相关资源
最近更新 更多