当前位置: 首页 > 面试题库 >

如何获取在Python中捕获的异常的名称?

邹宣
2023-03-14
问题内容

如何获得在Python中引发的异常的名称?

例如,

try:
    foo = bar
except Exception as exception:
    name_of_exception = ???
    assert name_of_exception == 'NameError'
    print "Failed with exception [%s]" % name_of_exception

例如,我正在捕获多个(或所有)异常,并想在错误消息中打印异常的名称。


问题答案:

以下是获取异常类名称的几种不同方法:

  1. type(exception).__name__
  2. exception.__class__.__name__
  3. 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'


 类似资料:
  • 问题内容: 发现在Java 1.6(以及从Eclipse)上运行时,吞没了该方法中的异常之后,我试图找到一种捕获这些异常的方法,而不会在我的所有实现中都添加throw / catch 。 该API建议覆盖应对此有所帮助: 导致此future报告一个ExecutionException,并以给定throwable作为其原因,除非已经设置或取消了此Future。计算失败时,run方法在内部调用此方法。

  • 这是我第一次问有关stackoverflow的问题。对不起,我的英语很差,英语不是我的母语。 我写了这样一个try/except条款: 当结果中没有“主机名”键时,它会出现一个KeyError异常。当我运行我的代码时,我看到异常已经被捕获,因为logger.error(e)在我的日志文件中放置了一个日志。但是它仍然引发了一个异常,没有返回这个{“retcode”: 1,“描述”:“失败”}。 异常

  • 问题内容: 我有一个Swing应用程序,即使我在/中都包含了所有内容,也没有捕获到异常。 我得到的只是这个堆栈跟踪: 问题答案: 正如另一位发布者所提到的,您的问题是该异常正在另一个线程(事件调度线程)中引发。几个解决方案: 在发生异常的实际代码周围进行尝试/捕获:例如,如果它是对ActionListener处理的按钮单击的响应,则将try / catch放入actionPerformed()方法

  • 问题内容: 我的JSP页面中有一个复选框,它接受整数值: 如果用户将输入的值更改为一个值,例如: 该页面将引发一个。如何在控制器中捕获并显示有意义的消息? 问题答案: 您可以使用JSTL的 c:catch 标签:

  • 我试图编写“好的”python并捕获一个S3,但没有这样的关键错误: 但是NoSuchKey没有定义,我无法跟踪到需要定义的导入。 是但是botocore.errorfactory导入的给出了一个错误,botocore.errorfactory导入的