1 个不稳定版本
使用旧的Rust 2015
0.1.0 | 2017年7月7日 |
---|
#125 在 #panic
10KB
118 行
panic上下文
这个库允许在panic时打印手动维护的消息。
当你的程序panic时,它会打印回溯。然而,如果panic发生在循环中,就不清楚是哪个迭代是原因。可以使用日志记录,但打印会显著减慢执行速度,并且你会得到很多条记录,而只需要最后几条。
Panic context允许你设置一个在panic发生之前不会打印的值。它还会在作用域结束时自动忘记。
示例
#[macro_use] extern crate panic_context;
use panic_context::panic_context;
static ITEMS: &[&str] = &["foo", "bar", "yo", "nope"];
fn get_len(item: &str) -> usize { item.len() }
fn calc_sig(item: &str) -> &str { &item[3..] }
fn main() {
let step = panic_context("step: ");
step.update("calculate lengths");
for item in ITEMS {
panic_context!("item: {}", item);
get_len(item);
}
step.update("calculate signatures");
for item in ITEMS {
panic_context!("item: {}", item);
calc_sig(item);
}
panic!("boom!");
}
当这段代码在calc_sig
中panic时,你会看到
Panic context:
step: calculate signatures
item: yo
thread 'main' panicked at '...', src/libcore/str/mod.rs:2162
note: Run with `RUST_BACKTRACE=1` for a backtrace.
依赖项
~14KB