diff options
author | Varriount <Varriount@users.noreply.github.com> | 2015-01-16 21:47:32 -0500 |
---|---|---|
committer | Varriount <Varriount@users.noreply.github.com> | 2015-01-16 21:47:32 -0500 |
commit | 1a76d26360fc6e19b73a0d0b03d0c0b059587c6f (patch) | |
tree | 4a5d1e42098d57df2e8e4d8e74dfbc6c7172294c | |
parent | b828bae80d5450a3bef97840ee14517f436485c1 (diff) | |
parent | 0f65c23a0be43085501e9b834f96e0c9035e67ee (diff) | |
download | Nim-1a76d26360fc6e19b73a0d0b03d0c0b059587c6f.tar.gz |
Merge pull request #1954 from ziotom78/devel
New section "Except clauses" in the manual
-rw-r--r-- | doc/manual/exceptions.txt | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/doc/manual/exceptions.txt b/doc/manual/exceptions.txt index e40742e0a..f18ab5635 100644 --- a/doc/manual/exceptions.txt +++ b/doc/manual/exceptions.txt @@ -67,6 +67,41 @@ follows a ``(`` it has to be written as a one liner: let x = (try: parseInt("133a") except: -1) +Except clauses +-------------- + +Within an ``except`` clause, it is possible to use +``getCurrentException`` to retrieve the exception that has been +raised: + +.. code-block:: nim + try: + # ... + except IOError: + let e = getCurrentException() + # Now use "e" + +Note that ``getCurrentException`` always returns a ``ref Exception`` +type. If a variable of the proper type is needed (in the example +above, ``IOError``), one must use an explicit cast: + +.. code-block:: nim + try: + # ... + except IOError: + let e = (ref IOError)(getCurrentException()) + # "e" is now of the proper type + +However, this is seldom needed. The most common case is to extract an +error message from ``e``, and for such situations it is enough to use +``getCurrentExceptionMsg``: + +.. code-block:: nim + try: + # ... + except IOError: + echo "I/O error: " & getCurrentExceptionMsg() + Defer statement --------------- |