Rozważmy następujący kod:Co oznacza podwyższenie w Pythonie?
try:
raise Exception("a")
except:
try:
raise Exception("b")
finally:
raise
To podniesie Exception: a
. Spodziewałem się, że podniesie on Exception: b
(czy muszę wyjaśnić, dlaczego?). Dlaczego ostateczny raise
podnosi oryginalny wyjątek, a nie (jak sądziłem) był ostatnim podniesionym wyjątkiem?
Python 3.1 podnosi obie. – kennytm
Ah. Powinienem wspomnieć, że jestem w Pythonie 2.6. – wilhelmtell
Po prostu z ciekawości: kompilator C# na tej samej kombinacji mówi "Błąd: Instrukcja throw bez argumentów nie jest dozwolona w klauzuli finally, która jest zagnieżdżona w najbliższej klauzuli catch enclude" (throw == raise, catch == except). Bez dwuznaczności! – Andrey