Struct pavex::error::UnexpectedError

source ·
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

source

pub fn new<E>(error: E) -> Self
where E: Into<Box<dyn Error + Send + Sync>>,

Create a new UnexpectedError from a boxable error.

source

pub fn into_inner(self) -> Box<dyn Error + Send + Sync>

Convert UnexpectedError back into the underlying boxed error.

source

pub fn inner_ref(&self) -> &(dyn Error + Send + Sync)

Return a reference to the underlying boxed error.

Trait Implementations§

source§

impl Debug for UnexpectedError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for UnexpectedError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for UnexpectedError

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more