pub enum ClientError {
    Panic(String),
    PluginError(PluginError),
    InvariantError(ClientInvariantError),
    ThawError(ClientThawError),
    ServerError {
        status: u16,
        message: String,
    },
    FetchError(FetchError),
    PlatformError(ClientPlatformError),
    PreloadError(ClientPreloadError),
}
Expand description

Errors that can occur in the browser.

Important: any changes to this enum constitute a breaking change, since users match this in their error pages. Changes in underlying enums are not considered breaking (e.g. introducing a new invariant error).

Warning: in all these cases, except ClientError::ServerError, the user can already see the prerendered version of the page, it just isn’t interactive. Only in that case will your error page occupy the entire screen, otherwise it will be placed into a div with the class __perseus-error, a deliberate choice to reinforce the best practice of giving the user as much as possible (it might not be interactive, but they can still use a rudimentary version). See the book for further details.

Panic handling

In a rather unorthodox manner, Perseus will do its level best to get an error message to the user of your app, no matter what happens. For this reason, this enum includes a Panic variant that will be provided when a panic has been intercepted. In this case, your error view will be rendered with no reactor, translations, or anything else available to it. What you do at this time is extremely important, since any panics in the code that handles that variant cannot be caught, leaving the user with no error message and an app that has completely frozen.

The Panic variant on this type only provides a formatted panic message, and nothing else from std::panic::PanicInfo, due to lifetime constraints. Since the message formatting is done by the standard library, which automatically takes account of the payload and message, the only other properties are location and can_unwind: the latter should be handled by Perseus if it ever is, and the former shoudl not be exposed to end users. Currently, there is no way to get the underlying PanicInfo through Perseus’ error handling system (although a plugin could do it by overriding the panic handler, but this is usually a bad idea).

Variants§

§

Panic(String)

§

PluginError(PluginError)

§

InvariantError(ClientInvariantError)

§

ThawError(ClientThawError)

§

ServerError

Fields

§status: u16
§message: String
§

FetchError(FetchError)

§

PlatformError(ClientPlatformError)

§

PreloadError(ClientPreloadError)

Trait Implementations§

source§

impl Debug for ClientError

source§

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

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

impl Display for ClientError

source§

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

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

impl Error for ClientError

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, demand: &mut Demand<'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<ClientError> for Error

source§

fn from(source: ClientError) -> Self

Converts to this type from the input type.
source§

impl From<ClientError> for ServerError

source§

fn from(source: ClientError) -> Self

Converts to this type from the input type.
source§

impl From<ClientInvariantError> for ClientError

source§

fn from(source: ClientInvariantError) -> Self

Converts to this type from the input type.
source§

impl From<ClientPlatformError> for ClientError

source§

fn from(source: ClientPlatformError) -> Self

Converts to this type from the input type.
source§

impl From<ClientPreloadError> for ClientError

source§

fn from(source: ClientPreloadError) -> Self

Converts to this type from the input type.
source§

impl From<ClientThawError> for ClientError

source§

fn from(source: ClientThawError) -> Self

Converts to this type from the input type.
source§

impl From<FetchError> for ClientError

source§

fn from(source: FetchError) -> Self

Converts to this type from the input type.
source§

impl From<PluginError> for ClientError

source§

fn from(source: PluginError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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.

source§

impl<T, U> Into<U> for Twhere 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.

§

impl<T, G> IntoView<G> for Twhere T: Display + 'static, G: GenericNode,

§

fn create(&self) -> View<G>

Called during the initial render when creating the DOM nodes. Should return a [View].
source§

impl<E> Provider for Ewhere E: Error + ?Sized,

source§

fn provide<'a>(&'a self, demand: &mut Demand<'a>)

🔬This is a nightly-only experimental API. (provide_any)
Data providers should implement this method to provide all values they are able to provide by using demand. Read more
source§

impl<T> ToString for Twhere 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 Twhere 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 Twhere 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.