mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
67 lines
787 B
Nim
67 lines
787 B
Nim
discard """
|
|
output: '''
|
|
BEFORE
|
|
FINALLY
|
|
|
|
BEFORE
|
|
EXCEPT
|
|
FINALLY
|
|
RECOVER
|
|
|
|
BEFORE
|
|
EXCEPT: IOError: hi
|
|
FINALLY
|
|
'''
|
|
"""
|
|
|
|
echo ""
|
|
|
|
proc no_expcetion =
|
|
try:
|
|
echo "BEFORE"
|
|
|
|
except:
|
|
echo "EXCEPT"
|
|
raise
|
|
|
|
finally:
|
|
echo "FINALLY"
|
|
|
|
try: no_expcetion()
|
|
except: echo "RECOVER"
|
|
|
|
echo ""
|
|
|
|
proc reraise_in_except =
|
|
try:
|
|
echo "BEFORE"
|
|
raise newException(IOError, "")
|
|
|
|
except IOError:
|
|
echo "EXCEPT"
|
|
raise
|
|
|
|
finally:
|
|
echo "FINALLY"
|
|
|
|
try: reraise_in_except()
|
|
except: echo "RECOVER"
|
|
|
|
echo ""
|
|
|
|
proc return_in_except =
|
|
try:
|
|
echo "BEFORE"
|
|
raise newException(IOError, "hi")
|
|
|
|
except:
|
|
echo "EXCEPT: ", getCurrentException().name, ": ", getCurrentExceptionMsg()
|
|
return
|
|
|
|
finally:
|
|
echo "FINALLY"
|
|
|
|
try: return_in_except()
|
|
except: echo "RECOVER"
|
|
|