pub struct UnexpectedError { /* private fields */ }
Expand description
When things went wrong, but you don’t know why.
UnexpectedError
is designed for failure scenarios
that the application wasn’t explicitly prepared to handle.
It works, in particular, as the “catch-all” variant in
an error enum.
§Example
use pavex::error::UnexpectedError;
use pavex::response::Response;
#[derive(Debug, thiserror::Error)]
pub enum HandlerError {
// One variant for each kind of known issue
// that might occur in the request handler.
#[error(transparent)]
Authorization(#[from] AuthorizationError),
#[error(transparent)]
Database(#[from] DatabaseError),
// [...]
// Followed by the catch-all variant.
#[error(transparent)]
Unexpected(#[from] UnexpectedError),
}
pub async fn request_handler() -> Result<Response, HandlerError> {
// [...]
}
§Error message
The error message is always the same when using UnexpectedError
:
“An unexpected error occurred”.
This is intentional, as we don’t want to leak any sensitive information
or implementation details to the client.
The full error details are still available when walking the source error chain and
will be captured in your logs if you have a suitable error observer in place.
Implementations§
source§impl UnexpectedError
impl UnexpectedError
sourcepub fn new<E>(error: E) -> Self
pub fn new<E>(error: E) -> Self
Create a new UnexpectedError
from a boxable error.
sourcepub fn into_inner(self) -> Box<dyn Error + Send + Sync>
pub fn into_inner(self) -> Box<dyn Error + Send + Sync>
Convert UnexpectedError
back into the underlying boxed error.
Trait Implementations§
source§impl Debug for UnexpectedError
impl Debug for UnexpectedError
source§impl Display for UnexpectedError
impl Display for UnexpectedError
source§impl Error for UnexpectedError
impl Error for UnexpectedError
source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more
1.0.0 · source§fn description(&self) -> &str
fn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()
Auto Trait Implementations§
impl Freeze for UnexpectedError
impl !RefUnwindSafe for UnexpectedError
impl Send for UnexpectedError
impl Sync for UnexpectedError
impl Unpin for UnexpectedError
impl !UnwindSafe for UnexpectedError
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more