diff options
author | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2014-03-29 19:44:15 +0200 |
---|---|---|
committer | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2014-03-29 23:18:59 +0200 |
commit | d109676ec0e8ebd648658583842ec3a91952adf3 (patch) | |
tree | 145b5dd9f638b77fafc7d70344eced8adcd3aad7 | |
parent | f4417a1f95eca0ef0a9446059e3ed070dd5e4b6f (diff) |
py: Reraising exception possible only in except block.
-rw-r--r-- | py/vm.c | 3 | ||||
-rw-r--r-- | tests/basics/try-reraise.py | 9 |
2 files changed, 11 insertions, 1 deletions
@@ -697,6 +697,9 @@ unwind_return: unum = *ip++; assert(unum <= 1); if (unum == 0) { + if (!currently_in_except_block) { + nlr_jump(mp_obj_new_exception_msg(&mp_type_RuntimeError, "No active exception to reraise")); + } // This assumes that nlr.ret_val holds last raised // exception and is not overwritten since then. obj1 = nlr.ret_val; diff --git a/tests/basics/try-reraise.py b/tests/basics/try-reraise.py index bc817fc38..bf5e77c0b 100644 --- a/tests/basics/try-reraise.py +++ b/tests/basics/try-reraise.py @@ -1,4 +1,4 @@ -# Re-reraising last exception with raise w/o args +# Reraising last exception with raise w/o args def f(): try: @@ -10,3 +10,10 @@ try: f() except ValueError as e: print(repr(e)) + + +# Can reraise only in except block +try: + raise +except RuntimeError: + print("RuntimeError") |