Adds some documentation related to exceptions.

This commit is contained in:
Grzegorz Adam Hankiewicz
2013-01-21 21:43:34 +01:00
parent d0bd5d5cc3
commit acc394ca23
2 changed files with 31 additions and 0 deletions

View File

@@ -2843,6 +2843,23 @@ in an implicit try block:
finally: close(f)
...
The ``except`` statement has a limitation in this form: you can't specify the
type of the exception, you have to catch everything. Also, if you want to use
both ``finally`` and ``except`` you need to reverse the usual sequence of the
statements. Example:
.. code-block:: nimrod
proc test() =
raise newException(E_base, "Hey ho")
proc tester() =
finally: echo "3. Finally block"
except: echo "2. Except block"
echo "1. Pre exception"
test()
echo "4. Post exception"
# --> 1, 2, 3 is printed, 4 is never reached
Raise statement
---------------

View File

@@ -433,6 +433,20 @@ handled, it is propagated through the call stack. This means that often
the rest of the procedure - that is not within a ``finally`` clause -
is not executed (if an exception occurs).
If you need to *access* the actual exception object or message inside an
``except`` branch you can use the getCurrentException() and
getCurrentExceptionMsg() procs from the `system <system.html>`_ module.
Example:
.. code-block:: nimrod
try:
doSomethingHere()
except:
let
e = getCurrentException()
msg = getCurrentExceptionMsg()
echo "Got exception ", repr(e), " with message ", msg
Exception hierarchy
-------------------