pub fn panicking() -> bool
Expand description
确定当前线程是否由于 panic 而处于展开状态。
此特性的一个常见用途是在编写不安全代码时毒害共享资源,方法是在调用 drop
时检查 panic
。
编写安全代码时通常不需要这样做,因为当线程在持有锁时 panic,Mutex
已经中毒了。
这也可以在多线程应用程序中使用,以便向其他线程发送消息,警告某个线程已发生 panic (例如,出于监视目的)。
ⓘuse std::thread;
struct SomeStruct;
impl Drop for SomeStruct {
fn drop(&mut self) {
if thread::panicking() {
println!("dropped while unwinding");
} else {
println!("dropped while not unwinding");
}
}
}
{
print!("a: ");
let a = SomeStruct;
}
{
print!("b: ");
let b = SomeStruct;
panic!()
}
Run