Skip to main content

ControllerError

Struct ControllerError 

Source
pub struct ControllerError {
    error_type: <ControllerError as BackendError>::ErrorType,
    message: String,
    source: Option<Error>,
    span_trace: Box<SpanTrace>,
    backtrace: Box<Backtrace>,
    location: Option<&'static Location<'static>>,
}
Expand description

Represents error messages that are sent in responses. Used as the error type in ControllerError, which is used by all the controllers in the application.

All the information in the error is meant to be seen by the user. The type of error is determined by the ControllerErrorType enum, which is stored inside this struct. The type of the error determines which HTTP status code will be sent to the user.

§Examples

§Usage without source error

if erroneous_condition {
    return Err(ControllerError::new(
        ControllerErrorType::BadRequest,
        "Cannot create a new account when signed in.".to_string(),
        None,
    ));
}

§Usage with a source error

Used when calling a function that returns an error that cannot be automatically converted to an ControllerError. (See impl From<X> implementations on this struct.)

some_function_returning_an_error().map_err(|original_error| {
    ControllerError::new(
        ControllerErrorType::InternalServerError,
        "Could not read file".to_string(),
        Some(original_error.into()),
    )
})?;

§Example HTTP response from an error

{
    "title": "Internal Server Error",
    "message": "pool timed out while waiting for an open connection",
    "source": "source of error"
}

Fields§

§error_type: <ControllerError as BackendError>::ErrorType§message: String§source: Option<Error>

Original error that caused this error.

§span_trace: Box<SpanTrace>

A trace of tokio tracing spans, generated automatically when the error is generated.

§backtrace: Box<Backtrace>

Stack trace, generated automatically when the error is created.

§location: Option<&'static Location<'static>>

Source location where the error was raised.

Implementations§

Source§

impl ControllerError

Source

fn render_clean_error(&self, out: &mut dyn Write, color: ColorChoice) -> Result

Source

pub fn clean_string(&self, color: ColorChoice) -> String

Render this error in the clean developer format.

Source§

impl ControllerError

Source

fn error_type_and_message_key(&self) -> (&'static str, &'static str)

Source

fn validation_issues(&self) -> Vec<ApiErrorIssue>

Derives issue-level validation details from known backend validation cases.

Trait Implementations§

Source§

impl BackendError for ControllerError

Source§

type ErrorType = ControllerErrorType

Source§

fn backtrace(&self) -> Option<&Backtrace>

Source§

fn error_type(&self) -> &Self::ErrorType

Source§

fn message(&self) -> &str

Source§

fn span_trace(&self) -> &SpanTrace

Source§

fn location(&self) -> Option<&'static Location<'static>>

Source location where the error was raised, if captured.
Source§

fn new_with_traces_and_location<M: Into<String>, S: Into<Option<Error>>>( error_type: Self::ErrorType, message: M, source_error: S, backtrace: Backtrace, span_trace: SpanTrace, location: Option<&'static Location<'static>>, ) -> Self

The one required constructor; the others delegate to it.
Source§

fn new<M, S>(error_type: Self::ErrorType, message: M, source_error: S) -> Self
where M: Into<String>, S: Into<Option<Error>>, Self: Sized,

Create an error, capturing the caller’s location, a backtrace and the span trace. Read more
Source§

fn new_with_traces<M, S>( error_type: Self::ErrorType, message: M, source_error: S, backtrace: Backtrace, span_trace: SpanTrace, ) -> Self
where M: Into<String>, S: Into<Option<Error>>, Self: Sized,

Like new but with an explicit backtrace and span trace, e.g. to preserve a source error’s traces.
Source§

fn to_different_error<T>( self, new_error_type: <T as BackendError>::ErrorType, new_message: String, ) -> T
where T: BackendError, Self: Sized + 'static + Send,

Source§

impl Debug for ControllerError

Source§

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

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

impl Display for ControllerError

Source§

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

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

impl Error for ControllerError

Source§

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

Returns the lower-level source of this error, if any. Read more
Source§

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

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

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
Source§

impl From<ChatbotError> for ControllerError

Source§

fn from(err: ChatbotError) -> Self

Converts to this type from the input type.
Source§

impl From<DecodeError> for ControllerError

Source§

fn from(err: DecodeError) -> Self

Converts to this type from the input type.
Source§

impl From<DpopError> for ControllerError

Source§

fn from(err: DpopError) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for ControllerError

Source§

fn from(err: Error) -> ControllerError

Converts to this type from the input type.
Source§

impl From<Error> for ControllerError

Source§

fn from(err: Error) -> ControllerError

Converts to this type from the input type.
Source§

impl From<Error> for ControllerError

Source§

fn from(err: Error) -> ControllerError

Converts to this type from the input type.
Source§

impl From<Error> for ControllerError

Source§

fn from(err: Error) -> ControllerError

Converts to this type from the input type.
Source§

impl From<Error> for ControllerError

Source§

fn from(err: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for ControllerError

Source§

fn from(err: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for ControllerError

Source§

fn from(err: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for ControllerError

Source§

fn from(err: Error) -> Self

Converts to this type from the input type.
Source§

impl From<FromUtf8Error> for ControllerError

Source§

fn from(err: FromUtf8Error) -> Self

Converts to this type from the input type.
Source§

impl From<ModelError> for ControllerError

Source§

fn from(err: ModelError) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for ControllerError

Source§

fn from(err: MultipartError) -> Self

Converts to this type from the input type.
Source§

impl From<PkceError> for ControllerError

Source§

fn from(err: PkceError) -> Self

Converts to this type from the input type.
Source§

impl From<PkceFlowError> for ControllerError

Source§

fn from(err: PkceFlowError) -> Self

Converts to this type from the input type.
Source§

impl From<TokenGrantError> for ControllerError

Source§

fn from(err: TokenGrantError) -> Self

Converts to this type from the input type.
Source§

impl From<UtilError> for ControllerError

Source§

fn from(err: UtilError) -> Self

Converts to this type from the input type.
Source§

impl ResponseError for ControllerError

Source§

fn error_response(&self) -> HttpResponse

Creates full response for error. Read more
Source§

fn status_code(&self) -> StatusCode

Returns appropriate status code for error. 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> ErrorTrace for T
where T: BackendError,

Source§

fn type_name(&self) -> &'static str

Short type name, e.g. "ChatbotError".
Source§

fn variant(&self) -> String

Error-type variant, via its Debug.
Source§

fn message(&self) -> &str

Human-facing message.
Source§

fn backtrace(&self) -> Option<&Backtrace>

Captured OS backtrace, if any.
Source§

fn location(&self) -> Option<&'static Location<'static>>

Captured raise location, if any.
Source§

fn span_trace(&self) -> &SpanTrace

Captured tracing span trace.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FutureExt for T

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
§

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
§

impl<E> InstrumentError for E
where TracedError<E>: From<E>,

§

type Instrumented = TracedError<E>

The type of the wrapped error after instrumentation
§

fn in_current_span(self) -> <E as InstrumentError>::Instrumented

Instrument an Error by bundling it with a SpanTrace 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> IntoRequest<T> for T

§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
§

impl<L> LayerExt<L> for L

§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in [Layered].
§

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

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T> ServiceExt for T

§

fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>
where Self: Sized,

Apply a transformation to the response body. Read more
§

fn decompression(self) -> Decompression<Self>
where Self: Sized,

Decompress response bodies. Read more
§

fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>
where Self: Sized,

High level tracing that classifies responses using HTTP status codes. Read more
§

fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>
where Self: Sized,

High level tracing that classifies responses using gRPC headers. Read more
§

fn follow_redirects(self) -> FollowRedirect<Self>
where Self: Sized,

Follow redirect resposes using the Standard policy. Read more
Source§

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

Source§

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>,

Source§

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>,

Source§

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
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,