Rust 使用 panic! 处理不可恢复的错误17 Mar 2025 | 阅读 2 分钟 不可恢复的错误是指被检测到但程序员无法处理的错误。当发生此类错误时,会执行 panic! 宏。panic! 会打印失败消息。panic! 宏会展开并清理堆栈,然后退出。 ![]()
让我们看一个 panic! 宏的简单例子 输出 ![]() 在上面的输出中,第一行显示了错误消息,其中包含两条信息,即 panic 消息和错误位置。panic 消息是“no such file exist”,而 error.rs:3:5 表示它是文件 error.rs:3:5 的第三行和第五个字符。 注意:通常,我们不会在程序中实现 panic!。我们的程序代码调用标准库中定义的 panic!。包含文件名和行号的错误消息在其他人的代码中可用,其中调用了 panic! 宏。panic! 宏的优点Rust 语言没有缓冲区溢出问题。缓冲区溢出是一种情况,当从缓冲区读取数据时,程序超过了缓冲区,即读取了相邻的内存。这导致了内存安全性的违反。 让我们看一个简单的例子 输出 ![]() 在上面的例子中,我们试图访问第六个元素,它的索引是 5。在这种情况下,Rust 会 panic,因为我们正在访问无效的索引。因此,Rust 不会返回任何东西。 但是,在其他语言(如 C 和 C++)中,即使向量不属于该内存,它们也会返回一些东西。 这被称为缓冲区溢出,它会导致安全问题。 Rust 回溯 (Backtrace)Rust 回溯是已调用过的所有函数的列表,用于了解 "是什么导致了错误。" 我们需要设置 RUST_BACKTRACE 环境变量来获取回溯。 下一个主题Rust 可恢复的错误 |
我们请求您订阅我们的新闻通讯以获取最新更新。