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 模式

Download history 33175/week @ 2024-05-04 27224/week @ 2024-05-11 28400/week @ 2024-05-18 25547/week @ 2024-05-25 34573/week @ 2024-06-01 28443/week @ 2024-06-08 28816/week @ 2024-06-15 27939/week @ 2024-06-22 30062/week @ 2024-06-29 34364/week @ 2024-07-06 32836/week @ 2024-07-13 36564/week @ 2024-07-20 39483/week @ 2024-07-27 36798/week @ 2024-08-03 34904/week @ 2024-08-10 27995/week @ 2024-08-17

每月145,360 次下载
用于 243 个crate(直接使用216个)

MIT/Apache

27KB
299

human-panic

crates.io version build status downloads docs.rs docs

为人类设计的恐慌消息。通过调用 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

许可证

MITApache-2.0

依赖项

~4–13MB
~163K SLoC