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

我可以从python中的finally块获取异常吗?

东郭远航
2023-03-14
问题内容

我的脚本中有一个try/finally子句。是否可以从finally子句中获取确切的错误消息?


问题答案:

不,无论是否有例外,finally时间sys.exc_info都是无。采用:

try:
  whatever
except:
  here sys.exc_info is valid
  to re-raise the exception, use a bare `raise`
else:
  here you know there was no exception
finally:
  and here you can do exception-independent finalization


 类似资料:
  • 问题内容: 有没有一种优雅的方法来处理块中引发的异常? 例如: 如何避免在/ 在块? 问题答案: 我通常这样做: 别处:

  • 问题内容: 我正在为项目编写自定义日志记录系统。如果一个函数抛出异常,我想记录它的局部变量。是否可以从捕获异常的except块中访问提升函数的局部变量?例如: 问题答案: 如果您知道异常处理代码将需要使用该值,那么通常将其传递给异常是一种更干净的设计。但是,如果要编写调试器或类似的东西,则需要在不事先知道变量的情况下访问变量,则 可以 在引发异常的上下文中访问任意变量: 模块文档中介绍了该功能的功

  • 除了使用 sys.exc_info() 方法获取更多的异常信息之外,还可以使用 traceback 模块,该模块可以用来查看异常的传播轨迹,追踪异常触发的源头。 下面示例显示了如何显示异常传播轨迹: 上面程序中 main() 函数调用 firstMethod(),firstMethod() 调用 secondMethod(),secondMethod() 调用 thirdMethod(),thir

  • 问题内容: 通常,我会遇到必须吞下/ 块中清理代码所引发的异常以防止原始异常被吞咽的情况。 例如: 假设记录任何异常不是方法块范围内的选项,而是由调用and 方法的代码完成。 吞没和方法抛出的异常是一个好主意吗?如果没有,什么是处理上述情况的更好方法,以免吞下异常? 问题答案: 我不喜欢捕捉和抛出异常。 如果你抓住它,做 一些 与它-即使它只是记录例外。 如果您不能执行任何操作,请不要捕获它-在方

  • 假如你在读一个文件的时候,希望在无论异常发生与否的情况下都关闭文件,该怎么做呢?这可以使用finally块来完成。注意,在一个try块下,你可以同时使用except从句和finally块。如果你要同时使用它们的话,需要把一个嵌入另外一个。 使用finally 例13.3 使用finally #!/usr/bin/python # Filename: finally.py importtime tr

  • 问题内容: 在Java中,是否有一种优雅的方法可以在运行finally块之前检测是否发生了异常?在处理“ close()”语句时,通常需要在finally块中进行异常处理。理想情况下,我们希望维护两个异常并向上传播它们(因为它们都可能包含有用的信息)。我能想到的唯一方法是在try- catch-finally范围之外有一个变量,以保存对引发的异常的引用。然后将“保存的”异常与在finally块中发