【发布时间】:2010-10-14 17:00:03
【问题描述】:
考虑以下代码:
try:
raise Exception("a")
except:
try:
raise Exception("b")
finally:
raise
这将引发Exception: a。我预计它会提高Exception: b(需要我解释为什么吗?)。为什么最终的raise 引发了原始异常,而不是(我认为)是最后一个引发的异常?
【问题讨论】:
-
Python 3.1 提高了两者。
-
啊。我应该提到我使用的是 Python 2.6。
-
只是出于好奇:同一组合上的 C# 编译器说“错误:嵌套在最近的封闭 catch 子句中的 finally 子句中不允许使用没有参数的 throw 语句”(throw == raise , 捕捉 == 除外)。没有歧义!
-
@Andrey 但是,我不希望代码会造成歧义。我预计第二个例外会影响第一个例外。我以前认为
raise是指最后抛出的异常。我才知道我错了。 -
@Andrey 你的问题是什么?