如何解决如何在python中捕获finally异常子句的消息?
| 我知道如何捕获异常并打印它们返回的消息:class SelfDefinedException(Exception): pass
try:
message = \"Hello World!\"
raise SelfDefinedException(message)
except MyDefinedException,e:
print \"MyDefinedException\",e
到目前为止效果很好。
但是,如何在\'finally \'子句中捕获并打印消息?
class SelfDefinedException(Exception): pass
try:
message = \"Hello World!\"
raise SelfDefinedException(message)
except MyDefinedException,e
finally:
# What goes here? So I can see what went wrong?
从几个答案中我知道,这是不可能的。这样做可以吗?
class SelfDefinedException(Exception): pass
try:
message = \"Hello World!\"
raise SelfDefinedException(message)
except MyDefinedException,e
except Exception,e:
# Hopefully catches all messages except for the one of MyDefinedException
print \"Unexpected Exception raised:\",e
解决方法
finally块中的代码将始终被评估。检查以查看catch块出了什么问题
, 根据文档,您不能:
异常信息不是
在此期间可供程序使用
执行finally子句。
最好检查除外块。
, 要捕获所有内容,请使用:
try:
foo()
except:
print sys.exc_info()
raise
但这几乎总是错误的做法。如果您没有发生任何异常,那么您将无能为力。如果发生这种情况,您的程序应关闭并提供有关所发生事件的尽可能多的信息。
, 我需要类似的东西,但就我而言,总是在没有异常发生时清理一些资源。
下面的解决方案示例为我工作,并且也应回答该问题。
caught_exception=None
try:
x = 10/0
#return my_function()
except Exception as e:
caught_exception = e
finally:
if caught_exception:
#Do stuff when exception
raise # re-raise exception
print \"No exception\"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。