mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-06 13:07:48 +00:00
77 lines
1.2 KiB
Nim
77 lines
1.2 KiB
Nim
discard """
|
|
output: '''A
|
|
B
|
|
X
|
|
inner finally
|
|
Y
|
|
outer finally
|
|
msg1
|
|
msg2
|
|
finally2
|
|
finally1
|
|
true'''
|
|
cmd: "nim c --gc:arc $file"
|
|
"""
|
|
|
|
# bug #13668
|
|
|
|
proc main =
|
|
try:
|
|
try:
|
|
raise newException(IOError, "IOError")
|
|
|
|
except:
|
|
echo "A"
|
|
raise newException(CatchableError, "CatchableError")
|
|
|
|
except:
|
|
echo "B"
|
|
#discard
|
|
|
|
proc mainB =
|
|
try:
|
|
try:
|
|
raise newException(IOError, "IOError")
|
|
|
|
except:
|
|
echo "X"
|
|
raise newException(CatchableError, "CatchableError")
|
|
finally:
|
|
echo "inner finally"
|
|
|
|
except:
|
|
echo "Y"
|
|
#discard
|
|
finally:
|
|
echo "outer finally"
|
|
|
|
main()
|
|
mainB()
|
|
|
|
when true:
|
|
#bug 7204
|
|
proc nested_finally =
|
|
try:
|
|
raise newException(KeyError, "msg1")
|
|
except KeyError as ex:
|
|
echo ex.msg
|
|
try:
|
|
# pop exception
|
|
raise newException(ValueError, "msg2") # push: exception stack (1 entry)
|
|
except:
|
|
echo getCurrentExceptionMsg()
|
|
# pop exception (except)
|
|
finally:
|
|
echo "finally2"
|
|
# pop exception (except KeyError as ex)
|
|
finally:
|
|
echo "finally1"
|
|
|
|
nested_finally()
|
|
|
|
# bug #14925
|
|
proc test(b: bool) =
|
|
echo b
|
|
|
|
test(try: true except: false)
|