我知道如何捕获异常并打印他们返回的消息:
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:
print "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:
print "MyDefinedException", e
except Exception, e:
# Hopefully catches all messages except for the one of MyDefinedException
print "Unexpected Exception raised:", e
答案 0 :(得分:4)
将始终评估finally块中的代码。检查catch块中出了什么问题
答案 1 :(得分:4)
答案 2 :(得分:2)
要抓住任何东西:
try:
foo()
except:
print sys.exc_info()
raise
但这几乎总是错误的做法。如果你没有发生什么样的例外,那么你无能为力。如果发生这种情况,您的程序应该关闭并尽可能多地提供有关所发生情况的信息。
答案 3 :(得分:1)
我需要类似的东西,但在我的情况下,在没有异常发生时总是清理一些资源。 以下解决方案示例对我有用,也应该回答这个问题。
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"