mirror of
https://github.com/actix/actix-extras.git
synced 2025-06-25 18:09:22 +02:00
Allow to access Error's backtrace object
This commit is contained in:
17
src/error.rs
17
src/error.rs
@ -45,6 +45,16 @@ impl Error {
|
||||
pub fn cause(&self) -> &ResponseError {
|
||||
self.cause.as_ref()
|
||||
}
|
||||
|
||||
/// Returns a reference to the Backtrace carried by this error, if it
|
||||
/// carries one.
|
||||
pub fn backtrace(&self) -> Option<&Backtrace> {
|
||||
if let Some(bt) = self.cause.backtrace() {
|
||||
Some(bt)
|
||||
} else {
|
||||
self.backtrace.as_ref()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Error that can be converted to `HttpResponse`
|
||||
@ -793,6 +803,13 @@ mod tests {
|
||||
assert_eq!(format!("{}", e.cause().unwrap()), desc);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_backtrace() {
|
||||
let orig = ErrorBadRequest("err");
|
||||
let e: Error = orig.into();
|
||||
assert!(e.backtrace().is_some());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_error_cause() {
|
||||
let orig = io::Error::new(io::ErrorKind::Other, "other");
|
||||
|
Reference in New Issue
Block a user