#error #backtrace #capture #description #optional #textual #debugging

ebacktrace

一个简单的错误包装器,可以捕获堆栈跟踪并携带可选的文本描述

6 个版本 (3 个破坏性更新)

0.5.1 2022年3月1日
0.5.0 2022年3月1日
0.4.0 2022年2月13日
0.3.2 2021年9月9日
0.2.0 2021年6月29日

#995 in Rust 模式


9 个crate中使用 (8 个直接使用)

BSD-2-Clause OR MIT

14KB
159

License BSD-2-Clause License MIT AppVeyor CI docs.rs crates.io Download numbers dependency status

ebacktrace

欢迎使用 ebacktrace 🎉

此crate实现了一个简单的错误包装器,在创建时捕获堆栈跟踪,并可以携带错误的可选文本描述。

示例

use ebacktrace::define_error;
use std::fmt::{ self, Display, Formatter };

/// The error kind
#[derive(Debug, Copy, Clone)]
enum ErrorKind {
    MyErrorA,
    Testolope
}
impl Display for ErrorKind {
    fn fmt(&self, f: &mut Formatter) -> fmt::Result {
        write!(f, "{:#?}", self)
    }
}
// Define our custom error type
define_error!(Error);

/// A function that will always fail
fn will_fail() -> Result<(), Error<ErrorKind>> {
    Err(ErrorKind::Testolope)?
}

// Will panic with a nice error
if let Err(e) = will_fail() {
    eprintln!("Error: {:?}", e);
    panic!("Fatal error")
}

功能

此crate目前有一个功能门

  • force_backtrace (默认禁用):如果启用force_backtrace,则无论是否设置了RUST_BACKTRACE,都会捕获堆栈跟踪。

依赖关系

~2.5–3.5MB
~72K SLoC