Nim编程:线程异常处理与数据解析实战
1. 线程中的异常处理
在Nim编程中,线程里的异常表现可能会让人意外。当一个线程因未处理的异常而崩溃时,整个应用程序也会随之崩溃,无论是否读取 FlowVar 的值。不过在未来的Nim版本中,这种行为会有所改变,只有在读取 FlowVar 的值时才会抛出异常。
以下是一个展示这种行为的示例代码:
import threadpool
proc crash(): string =
raise newException(Exception, "Crash")
let lineFlowVar = spawn crash()
sync()
将上述代码保存为 listing6.nim ,然后编译并运行,输出中会显示一个回溯信息,指向 crash 过程中的 raise 语句。
为了确保线程能处理所有异常,可以使用 raises 编译指令。例如,将 crash 过程定义如下:
proc crash(): string {.raises: [].} = …
这样就将 crash 过程标记为不会抛出异常,允许抛出的异常可以在方括号中指定。
一般来说, spawn
Nim线程异常与数据解析实战
超级会员免费看
订阅专栏 解锁全文
5350

被折叠的 条评论
为什么被折叠?



