排除从句

except 子句中,可以使用以下语法访问当前异常:

  1. try:
  2. # ...
  3. except IOError as e:
  4. # Now use "e"
  5. echo "I/O error: " & e.msg

或者,可以使用 getCurrentException 来检索已经引发的异常:

  1. try:
  2. # ...
  3. except IOError:
  4. let e = getCurrentException()
  5. # 现在使用"e"

注意 getCurrentException 总是返回一个 ref Exception 类型。

如果需要一个正确类型的变量(在上面的例子中,IOError ),必须明确地转换它:

  1. try:
  2. # ...
  3. except IOError:
  4. let e = (ref IOError)(getCurrentException())
  5. # "e"现在是合适的类型

但是,这很少需要。 最常见的情况是从 e 中提取错误消息,对于这种情况,使用 getCurrentExceptionMsg 就足够了:

  1. try:
  2. # ...
  3. except:
  4. echo getCurrentExceptionMsg()