2个版本
0.1.1 | 2019年2月14日 |
---|---|
0.1.0 | 2019年1月3日 |
#21 in #derive-error
5KB
rust-sentry_rocket
Sentry.io 对 Rocket 网络服务器的客户端扩展。
说明
将 sentry_rocket::Error
类型用作处理函数的返回错误类型(例如:Result<String, custom_derive::Error>
)
别忘了运行常规的 let _guard = sentry::init(...);
它会将任何错误发送到sentry。 (如果没有执行,则第一次错误会引发恐慌)
注意,如果您希望有适当的回溯处理,应该使用 failure
包来传播错误。
此外,使用 sentry_rocket::sentry
而不是 sentry
将确保版本匹配,因此初始化的sentry模块与模块使用的模块相同(否则第一次错误会引发恐慌)(如果这样做,您不需要 sentry
作为项目的依赖项,只需 sentry_rocket
即可)。
示例
#![feature(proc_macro_hygiene, decl_macro)]
#[macro_use]
extern crate rocket;
use sentry_rocket::sentry;
#[get("/")]
fn index() -> &'static str {
"Hello, world!"
}
#[get("/fail")]
fn fail() -> Result<(), sentry_rocket::Error> {
something_that_may_fail()?;
Ok(())
}
fn something_that_may_fail() -> Result<(), failure::Error> {
let some_result = Err(std::io::Error::new(
std::io::ErrorKind::Other,
"Something failed",
));
Ok(some_result?)
}
fn main() {
let _guard = sentry::init("https://[email protected]/1041156");
std::env::set_var("RUST_BACKTRACE", "1");
sentry::integrations::panic::register_panic_handler();
rocket::ignite().mount("/", routes![index, fail]).launch();
}
(摘自 examples/basic_webserver.rs
)
依赖项
~16MB
~305K SLoC