This commit is contained in:
Andreas Rumpf
2017-07-13 04:43:53 +02:00
parent ec9de2e3cd
commit ebba9f06ae
3 changed files with 17 additions and 6 deletions

View File

@@ -442,6 +442,7 @@ type
## providing an exception message
## is bad style.
trace: string
up: ref Exception # used for stacking exceptions. Not exported!
SystemError* = object of Exception ## \
## Abstract class for exceptions that the runtime system raises.

View File

@@ -73,12 +73,11 @@ proc popSafePoint {.compilerRtl, inl.} =
excHandler = excHandler.prev
proc pushCurrentException(e: ref Exception) {.compilerRtl, inl.} =
#if e.parent.isNil:
# e.parent = currException
e.up = currException
currException = e
proc popCurrentException {.compilerRtl, inl.} =
currException = nil # currException.parent
currException = currException.up
# some platforms have native support for stack traces:
const

View File

@@ -1,6 +1,11 @@
discard """
file: "tfinally3.nim"
output: "false"
output: '''false
Within finally->try
Traceback (most recent call last)
tfinally3.nim(24) tfinally3
Error: unhandled exception: First [Exception]'''
exitCode: 1
"""
# Test break in try statement:
@@ -14,5 +19,11 @@ proc main: bool =
echo main() #OUT false
# bug #5871
try:
raise newException(Exception, "First")
finally:
try:
raise newException(Exception, "Within finally->try")
except:
echo getCurrentExceptionMsg()