Try 语句

例如:

  1. # 读取包含数字的文本文件的前两行,并尝试将它们相加
  2. var
  3. f: File
  4. if open(f, "numbers.txt"):
  5. try:
  6. var a = readLine(f)
  7. var b = readLine(f)
  8. echo "sum: " & $(parseInt(a) + parseInt(b))
  9. except OverflowDefect:
  10. echo "overflow!"
  11. except ValueError, IOError:
  12. echo "catch multiple exceptions!"
  13. except CatchableError:
  14. echo "Catchable exception!"
  15. finally:
  16. close(f)

try 之后的语句顺序执行,直到有异常 e 抛出。如果 e 的异常类型能够匹配 except 子句列出的异常类型,则执行对应的代码。 except 子句之后的代码被称为 exception handlers “异常处理程序”。

如果存在 finally 子句,那么 finally:idx 子句总会在异常处理程序之后得以执行。

异常处理程序会 吃掉 异常。然而异常处理程序也可能抛出新的异常。如果没有处理这个异常,则会通过调用栈传递出去。 这种情况往往意味着,所在过程剩下的那些不属于 finally 子句的代码不被执行。