Try语句
try 语句处理异常:
- from strutils import parseInt
- # 读取应包含数字的文本文件的前两行并尝试添加
- var
- f: File
- if open(f, "numbers.txt"):
- try:
- let a = readLine(f)
- let b = readLine(f)
- echo "sum: ", parseInt(a) + parseInt(b)
- except OverflowError:
- echo "overflow!"
- except ValueError:
- echo "could not convert string to integer"
- except IOError:
- echo "IO error!"
- except:
- echo "Unknown exception!"
- # reraise the unknown exception:
- raise
- finally:
- close(f)
除非引发异常,否则执行 try 之后的语句。然后执行适当的 except 部分。
如果存在未明确列出的异常,则执行空的 except 部分。它类似于 if 语句中的 else 部分。
如果有一个 finally 部分,它总是在异常处理程序之后执行。
在 except 部分中 消耗 异常。如果未处理异常,则通过调用堆栈传播该异常。这意味着程序的其余部分 - 不在 finally 子句中 - 通常不会被执行(如果发生异常)。
- 如果你需要*访问 except 分支中的实际异常对象或消息,你可以使用来自 system 模块的 getCurrentException() 和
- getCurrentExceptionMsg() 的过程。例:
- .. code-block:: nim
- try:
- doSomethingHere()
- except:
- let
- e = getCurrentException() msg = getCurrentExceptionMsg()echo "Got exception ", repr(e), " with message ", msg