merged #6512 manually; fixes #6431

This commit is contained in:
Araq
2018-02-27 17:42:38 +01:00
parent 9c7374abcd
commit c9f184401c
2 changed files with 15 additions and 0 deletions

View File

@@ -4117,3 +4117,17 @@ template doAssertRaises*(exception, code: untyped): typed =
raiseAssert(astToStr(exception) &
" wasn't raised, another error was raised instead by:\n"&
astToStr(code))
when defined(cpp) and appType != "lib" and not defined(js) and
not defined(nimscript) and hostOS != "standalone":
proc setTerminate(handler: proc() {.noconv.})
{.importc: "std::set_terminate", header: "<exception>".}
setTerminate proc() {.noconv.} =
# Remove ourself as a handler, reinstalling the default handler.
setTerminate(nil)
let ex = getCurrentException()
let trace = ex.getStackTrace()
stderr.write trace & "Error: unhandled exception: " & ex.msg &
" [" & $ex.name & "]\n"
quit 1

View File

@@ -2,6 +2,7 @@ discard """
file: "tunhandledexc.nim"
outputsub: "Error: unhandled exception: bla [ESomeOtherErr]"
exitcode: "1"
targets: "c cpp"
"""
type
ESomething = object of Exception