texceptions.nim 787 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. discard """
  2. output: '''
  3. BEFORE
  4. FINALLY
  5. BEFORE
  6. EXCEPT
  7. FINALLY
  8. RECOVER
  9. BEFORE
  10. EXCEPT: IOError: hi
  11. FINALLY
  12. '''
  13. """
  14. echo ""
  15. proc no_expcetion =
  16. try:
  17. echo "BEFORE"
  18. except:
  19. echo "EXCEPT"
  20. raise
  21. finally:
  22. echo "FINALLY"
  23. try: no_expcetion()
  24. except: echo "RECOVER"
  25. echo ""
  26. proc reraise_in_except =
  27. try:
  28. echo "BEFORE"
  29. raise newException(IOError, "")
  30. except IOError:
  31. echo "EXCEPT"
  32. raise
  33. finally:
  34. echo "FINALLY"
  35. try: reraise_in_except()
  36. except: echo "RECOVER"
  37. echo ""
  38. proc return_in_except =
  39. try:
  40. echo "BEFORE"
  41. raise newException(IOError, "hi")
  42. except:
  43. echo "EXCEPT: ", getCurrentException().name, ": ", getCurrentExceptionMsg()
  44. return
  45. finally:
  46. echo "FINALLY"
  47. try: return_in_except()
  48. except: echo "RECOVER"