This commit is contained in:
Araq
2020-01-10 01:51:06 +01:00
committed by Andreas Rumpf
parent 033da35de1
commit fcd2f305ad
2 changed files with 42 additions and 2 deletions

View File

@@ -452,8 +452,8 @@ proc raiseExceptionAux(e: sink(ref Exception)) {.nodestroy.} =
# XXX This check should likely also be done in the setjmp case below.
if e != currException:
pushCurrentException(e)
when gotoBasedExceptions:
inc nimInErrorMode
when gotoBasedExceptions:
inc nimInErrorMode
else:
if excHandler != nil:
pushCurrentException(e)

View File

@@ -0,0 +1,40 @@
discard """
cmd: "nim c --gc:arc --exceptions:goto $file"
output: '''caught in gun
caught in fun
caughtsome msgMyExcept
in finally
caught1'''
"""
when true:
# bug #13070
type MyExcept = object of CatchableError
proc gun() =
try:
raise newException(MyExcept, "some msg")
except Exception as eab:
echo "caught in gun"
raise eab
proc fun() =
try:
gun()
except Exception as e:
echo "caught in fun"
echo("caught", e.msg, e.name)
finally:
echo "in finally"
fun()
when true:
# bug #13072
type MyExceptB = object of CatchableError
proc gunB() =
raise newException(MyExceptB, "some msg")
proc funB() =
try:
gunB()
except CatchableError:
echo "caught1"
funB()