Rust-Panic-Panic实现机制

时间:2024-01-23 16:30:24

在Rust中,Panic的实现机制有两种方式:unwind和abort。

  • unwind方式在发生panic的时候,会一层一层地退出函数调用栈,在此过程中,当前栈内的局部变量还可以正常析构。
  • abort方式在发生panic的时候,会直接退出整个程序。

在常见的操作系统上,默认情况下,编译器使用的是unwind方式。所以在发生panic的时候,我们可以通过一层层地调用栈找到发生panic的第一现场,就像前面例子展示的那样。

但是,unwind并不是在所有平台上都能获得良好支持的。在某些嵌入式系统上,unwind根本无法实现,或者占用的资源太多。在这种时候,我们可以选择使用abort方式实现panic.

编译器提供了一个选项,供用户指定panic的实现方式。