rust - panic !不会停止 Iron 服务器

标签 rust iron

我以为 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您的构建使得 abortpanic! 时被调用。

关于rust - panic !不会停止 Iron 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38391415/

相关文章:

rust - 如何将 Stack Canaries 添加到 Rust 可执行文件中?

rust - 静态可变数据的惯用替代方法是什么?

rust - "parameter ` 'a` 从不使用 "error when ' a 在类型参数绑定(bind)中使用

rust - 包含文件后,柴油和火箭的进口就会中断

rust - 异步 fn 报告 "hidden type for ` impl Trait` 捕获未出现在边界中的生命周期”

json - 是否可以使用 Iron 框架在路由器位置发布 JSON 文件?

rust - 无法设置 Iron 框架响应的 header

ironworker - 如何在iron.io 中安排任务定期运行

request - 如何在中间件和处理程序中读取 Iron Request?

rust - 无法将实现特征的结构装箱为特征对象