[−][src]Struct rocket::Catcher
An error catching route.
Catchers are routes that run when errors occur. They correspond directly with the HTTP error status code they will be handling and are registered with Rocket via the Rocket::catch method. For example, to handle "404 not found" errors, a catcher for the "404" status code is registered.
Because error handlers are only called when all routes are exhausted, they should not fail nor forward. If an error catcher fails, the user will receive no response. If an error catcher forwards, Rocket will respond with an internal server error.
Built-In Catchers
Rocket has many built-in, pre-registered default catchers. In particular, Rocket has catchers for all of the following status codes: 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 421, 426, 428, 429, 431, 451, 500, 501, 503, and 510. As such, catchers only need to be registered if an error needs to be handled in a custom fashion.
Code Generation
Catchers should rarely be used directly. Instead, they are typically
declared using the catch
decorator, as follows:
#![feature(plugin)] #![plugin(rocket_codegen)] extern crate rocket; use rocket::Request; #[catch(500)] fn internal_error() -> &'static str { "Whoops! Looks like we messed up." } #[catch(400)] fn not_found(req: &Request) -> String { format!("I couldn't find '{}'. Try something else?", req.uri()) } fn main() { rocket::ignite().catch(catchers![internal_error, not_found]).launch(); }
A function decorated with catch
can take in 0, 1, or 2 parameters:
Error
, &Request
, or both, as desired.
Fields
code: u16
The HTTP status code to match against.
Methods
impl Catcher
[src]
impl Catcher
pub fn new(code: u16, handler: ErrorHandler) -> Catcher
[src]
pub fn new(code: u16, handler: ErrorHandler) -> Catcher
Creates a catcher for the given status code using the given error handler. This should only be used when routing manually.
Examples
use rocket::{Catcher, Request, Error}; use rocket::response::{Result, Responder}; use rocket::response::status::Custom; use rocket::http::Status; fn handle_404<'r>(_: Error, req: &'r Request) -> Result<'r> { let res = Custom(Status::NotFound, format!("404: {}", req.uri())); res.respond_to(req) } fn handle_500<'r>(_: Error, req: &'r Request) -> Result<'r> { "Whoops, we messed up!".respond_to(req) } let not_found_catcher = Catcher::new(404, handle_404); let internal_server_error_catcher = Catcher::new(500, handle_500);
Trait Implementations
Auto Trait Implementations
Blanket Implementations
impl<T, U> Into for T where
U: From<T>,
[src]
impl<T, U> Into for T where
U: From<T>,
impl<T> ToString for T where
T: Display + ?Sized,
[src]
impl<T> ToString for T where
T: Display + ?Sized,
impl<T> From for T
[src]
impl<T> From for T
impl<T, U> TryFrom for T where
T: From<U>,
[src]
impl<T, U> TryFrom for T where
T: From<U>,
type Error = !
try_from
)The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
try_from
)Performs the conversion.
impl<T> Borrow for T where
T: ?Sized,
[src]
impl<T> Borrow for T where
T: ?Sized,
impl<T> BorrowMut for T where
T: ?Sized,
[src]
impl<T> BorrowMut for T where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src]
impl<T, U> TryInto for T where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
try_from
)The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
try_from
)Performs the conversion.
impl<T> Any for T where
T: 'static + ?Sized,
[src]
impl<T> Any for T where
T: 'static + ?Sized,
fn get_type_id(&self) -> TypeId
[src]
fn get_type_id(&self) -> TypeId
🔬 This is a nightly-only experimental API. (get_type_id
)
this method will likely be replaced by an associated static
Gets the TypeId
of self
. Read more
impl<T> Typeable for T where
T: Any,
impl<T> Typeable for T where
T: Any,