From 865d9cc6e6df872f7fa1a32536a3ae42c0384d51 Mon Sep 17 00:00:00 2001 From: Araq Date: Mon, 5 Nov 2012 08:36:44 +0100 Subject: added system.onRaise to support a condition system --- tests/run/tonraise.nim | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 tests/run/tonraise.nim (limited to 'tests') 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() -- cgit 1.4.1-2-gfad0