19 个版本 (稳定)
2.0.1 | 2024年7月25日 |
---|---|
1.2.3 | 2024年1月12日 |
1.2.2 | 2023年11月6日 |
1.1.5 | 2023年6月13日 |
0.4.0 | 2018年4月19日 |
#24 in Rust 模式
每月145,360 次下载
用于 243 个crate(直接使用216个)
27KB
299 行
human-panic
为人类设计的恐慌消息。通过调用 std::panic::set_hook
使错误对人类友好。
为什么?
当您构建 CLI 时,细节非常重要。尽管 Rust 在安全性方面非常出色,但访问数组错误的索引或断言失败并不是闻所未闻。
当错误最终发生时,您可能想了解它。因此,我们不仅可以提供命令行上的错误消息,还可以创建一个呼叫行动,让人们提交报告。
这将使人们能够参与沟通,降低人们可能感到沮丧的机会。并更容易找出可能引起错误的原因。
默认输出
thread 'main' panicked at 'oops', examples/main.rs:2:3
note: Run with `RUST_BACKTRACE=1` for a backtrace.
Human-Panic 输出
Well, this is embarrassing.
human-panic had a problem and crashed. To help us diagnose the problem you can send us a crash report.
We have generated a report file at "/var/folders/zw/bpfvmq390lv2c6gn_6byyv0w0000gn/T/report-8351cad6-d2b5-4fe8-accd-1fcbf4538792.toml". Submit an issue or email with the subject of "human-panic Crash Report" and include the report as an attachment.
- Homepage: https://github.com/rust-cli/human-panic
- Authors: Yoshua Wuyts <[email protected]>
We take privacy seriously, and do not perform any automated error collection. In order to improve the software, we rely on people to submit reports.
Thank you kindly!
human-panic
生成的错误转储文件包含以下字段。
name = 'single-panic-test'
operating_system = 'unix:Unknown'
crate_version = '0.1.0'
explanation = '''
Cause: OMG EVERYTHING IS ON FIRE!!!. Panic occurred in file 'tests/single-panic/src/main.rs' at line 8
'''
method = 'Panic'
backtrace = '''
stack backtrace:
0: 0x55fa0ed4c1b4 - backtrace::backtrace::libunwind::trace::h69e50feca54bfb84
at /home/spacekookie/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.6/src/backtrace/libunwind.rs:53
- backtrace::backtrace::trace::h42967341e0b01ccc
at /home/spacekookie/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.6/src/backtrace/mod.rs:42
# ...
8: 0x55fa0ebaac8d - single_panic_test::main::h56a3d326bcecfc36
at tests/single-panic/src/main.rs:8
9: 0x55fa0ebaae91 - std::rt::lang_start::{{closure}}::h09d28d8540038bf8
at /checkout/src/libstd/rt.rs:74
10: 0x55fa0ed732f7 - std::rt::lang_start_internal::{{closure}}::h2e4baf0a27c956a3
at libstd/rt.rs:59
- std::panicking::try::do_call::h73f98ed0647c7274
at libstd/panicking.rs:305
11: 0x55fa0ed8551e - __rust_maybe_catch_panic
at libpanic_unwind/lib.rs:101
12: 0x55fa0ed6f7f5 - std::panicking::try::h18fbb145180d4cd9
at libstd/panicking.rs:284
- std::panic::catch_unwind::hc4b6a212a30b4bc5
at libstd/panic.rs:361
- std::rt::lang_start_internal::h8b001b4244930d51
at libstd/rt.rs:58
13: 0x55fa0ebaae71 - std::rt::lang_start::h1b1de624209f414a
at /checkout/src/libstd/rt.rs:74
14: 0x55fa0ebaacbd - main
15: 0x7f9946132f29 - __libc_start_main
16: 0x55fa0eba9b79 - _start
17: 0x0 - <unknown>'''
用法
use human_panic::setup_panic;
fn main() {
setup_panic!();
println!("A normal log message");
panic!("OMG EVERYTHING IS ON FIRE!!!")
}
仅显示发布模式中的人类友好恐慌消息
$ cargo run --release
安装
$ cargo add human-panic
许可证
依赖项
~4–13MB
~163K SLoC