引发异常的procs注释

通过使用可选的 {.raises.} pragma,你可以指定过程是为了引发一组特定的异常,或者根本没有异常。如果使用 {.raises.} 编译指示,编译器将验证这是否为真。例如,如果指定过程引发 IOError ,并且在某些时候它(或它调用的一个过程)开始引发一个新的异常,编译器将阻止该过程进行编译。用法示例:

  1. proc complexProc() {.raises: [IOError, ArithmeticError].} =
  2. ...
  3.  
  4. proc simpleProc() {.raises: [].} =
  5. ...

一旦你有这样的代码,如果引发的异常列表发生了变化,编译器就会停止,并指出过程停止验证编译指示的行,没有捕获的异常和它的行数以及文件。 正在引发未捕获的异常,这可能有助于您找到已更改的有问题的代码。

如果你想将 {.raises.} 编译指示添加到现有代码中,编译器也可以帮助你。你可以在你的过程中添加 {.effects.} 编译指示语句, 编译器将输出所有推断的效果直到那一点(异常跟踪是Nim效果系统的一部分)。 查找proc引发的异常列表的另一种更迂回的方法是使用Nim doc2 命令,该命令为整个模块生成文档,并使用引发的异常列表来装饰所有过程。 您可以在手册中阅读有关Nim的 效果系统和相关编译指示的更多信息