📅  最后修改于: 2021-01-08 13:51:20             🧑  作者: Mango
不可恢复的错误是检测到的错误,程序员无法对其进行处理。当发生此类错误时,请惊慌!宏被执行。恐慌!打印失败消息。惊慌!宏展开将清理堆栈,然后退出。
panic = 'abort';
让我们看一个简单的恐慌例子!巨集:
fn main()
{
panic!(?No such file exist?);
}
输出:
在上面的输出中,第一行显示了错误消息,该错误消息传达了两个信息,即紧急消息和错误位置。紧急消息是“不存在此类文件”,并且error.rs:3:5表示它是我们文件error.rs:3:5的第三行和第五个字符。
注意:通常,我们不会实施恐慌!在我们的程序中。我们的程序代码引起了恐慌!在标准库中定义。包含文件名和行号的错误消息可在其他人的代码中找到!宏被调用。
Rust语言没有缓冲区溢出问题。当从缓冲区读取数据并且程序使缓冲区溢出时,即读取相邻存储器时,缓冲区溢出就是一种情况。这导致违反存储器安全性。
让我们看一个简单的例子:
fn main()
{
let v = vec![20,30,40];
print!("element of a vector is :",v[5]);
}
输出:
在上面的示例中,我们尝试访问索引5处的第六个元素。在这种情况下,Rust在访问无效索引时会感到恐慌。因此,Rust将不会返回任何东西。
但是,对于其他语言(例如C和C++),即使向量不属于该内存,它们也会返回某些内容。这就是所谓的缓冲区溢出,它会导致安全问题。
Rust Backtrace是已被调用以了解“发生了什么导致错误的所有函数”的列表。我们需要设置RUST_BACKTRACE环境变量来获取backtrace。