#sentry #rocket #io #extension #client #error #derive-error

sentry_rocket

Sentry.io 对Rocket网络服务器的客户端扩展

2个版本

0.1.1 2019年2月14日
0.1.0 2019年1月3日

#21 in #derive-error

LGPL-3.0-only

5KB

rust-sentry_rocket

Crates.io

Sentry.ioRocket 网络服务器的客户端扩展。

说明

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