我以为 panic!
会停止 Rust 中的所有内容,但如果我在 Iron 路由处理程序函数中 panic!
它不会停止整个服务器。相反,它只显示 panic 消息。
这是 panic!
的“正常”行为吗?
我没有发布我的实际代码,因为我认为它在这里没有用,但如果需要我可以添加它。
最佳答案
I thought
panic!
stops everything in Rust.
不完全是:panic!
仅停止¹ 当前 线程,对于单线程程序,它会停止整个程序。如果您生成另一个线程,父线程可以检测子线程是否崩溃 on joining .
Iron 使用许多线程来并行处理多个请求。显然它只是忽略了子线程中的 panic ......
¹ 作为 DK。和 Vladimir Matveev 在评论中提到的,这并不那么简单。当 panic 被“抛出”时,可能会发生多种情况。默认情况下,应用程序开始展开(沿着堆栈向下爬)直到堆栈的“末端”或到达 catch_unwind
。在前一种情况下,线程被杀死;在后者中,由用户决定会发生什么。也是possible to configure您的构建使得 abort
在 panic!
时被调用。
关于rust - panic !不会停止 Iron 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38391415/