diff options
Diffstat (limited to 'tests/run/tonraise.nim')
-rw-r--r-- | tests/run/tonraise.nim | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/run/tonraise.nim b/tests/run/tonraise.nim new file mode 100644 index 000000000..1a555dd94 --- /dev/null +++ b/tests/run/tonraise.nim @@ -0,0 +1,34 @@ +discard """ + output: '''i: 1 +success''' +""" + +type + ESomething = object of E_Base + ESomeOtherErr = object of E_Base + +proc genErrors(s: string) = + if s == "error!": + raise newException(ESomething, "Test") + else: + raise newException(EsomeotherErr, "bla") + +proc foo() = + var i = 0 + try: + inc i + onRaise(proc (e: ref E_Base): bool = + echo "i: ", i) + genErrors("errssor!") + except ESomething: + echo("ESomething happened") + except: + echo("Some other error happened") + + # test that raise handler is gone: + try: + genErrors("error!") + except ESomething: + echo "success" + +foo() |