Examples for Error Documentation (#144)
This commit is contained in:
		
				
					committed by
					
						 Sean McArthur
						Sean McArthur
					
				
			
			
				
	
			
			
			
						parent
						
							0759f43ecb
						
					
				
				
					commit
					c8d03dd8b9
				
			
							
								
								
									
										84
									
								
								src/error.rs
									
									
									
									
									
								
							
							
						
						
									
										84
									
								
								src/error.rs
									
									
									
									
									
								
							| @@ -4,6 +4,51 @@ use std::fmt; | |||||||
| use Url; | use Url; | ||||||
|  |  | ||||||
| /// The Errors that may occur when processing a `Request`. | /// The Errors that may occur when processing a `Request`. | ||||||
|  | /// | ||||||
|  | /// # Examples | ||||||
|  | /// | ||||||
|  | /// ``` | ||||||
|  | /// #[macro_use] | ||||||
|  | /// extern crate serde_derive; | ||||||
|  | /// extern crate reqwest; | ||||||
|  | /// | ||||||
|  | /// #[derive(Deserialize)] | ||||||
|  | /// struct Simple { | ||||||
|  | ///    key: String | ||||||
|  | /// } | ||||||
|  | /// # fn main() { } | ||||||
|  | /// | ||||||
|  | /// fn run() { | ||||||
|  | ///    match make_request() { | ||||||
|  | ///        Err(e) => handler(e), | ||||||
|  | ///        Ok(_)  => return, | ||||||
|  | ///    } | ||||||
|  | /// } | ||||||
|  | /// // Response is not a json object conforming to the Simple struct | ||||||
|  | /// fn make_request() -> Result<Simple, reqwest::Error> { | ||||||
|  | ///   reqwest::get("http://httpbin.org/ip")?.json() | ||||||
|  | /// } | ||||||
|  | /// | ||||||
|  | /// fn handler(e: reqwest::Error) { | ||||||
|  | ///    if e.is_http() { | ||||||
|  | ///        match e.url() { | ||||||
|  | ///            None => println!("No Url given"), | ||||||
|  | ///            Some(url) => println!("Problem making request to: {}", url), | ||||||
|  | ///        } | ||||||
|  | ///    } | ||||||
|  | ///    // Inspect the internal error and output it | ||||||
|  | ///    if e.is_serialization() { | ||||||
|  | ///       let serde_error = match e.get_ref() { | ||||||
|  | ///            None => return, | ||||||
|  | ///            Some(err) => err, | ||||||
|  | ///        }; | ||||||
|  | ///        println!("problem parsing information {}", serde_error); | ||||||
|  | ///    } | ||||||
|  | ///    if e.is_redirect() { | ||||||
|  | ///        println!("server redirecting too many times or making loop"); | ||||||
|  | ///    } | ||||||
|  | /// } | ||||||
|  | /// ``` | ||||||
| #[derive(Debug)] | #[derive(Debug)] | ||||||
| pub struct Error { | pub struct Error { | ||||||
|     kind: Kind, |     kind: Kind, | ||||||
| @@ -15,6 +60,25 @@ pub type Result<T> = ::std::result::Result<T, Error>; | |||||||
|  |  | ||||||
| impl Error { | impl Error { | ||||||
|     /// Returns a possible URL related to this error. |     /// Returns a possible URL related to this error. | ||||||
|  |     /// | ||||||
|  |     /// # Examples | ||||||
|  |     /// | ||||||
|  |     /// ``` | ||||||
|  |     /// # fn run() { | ||||||
|  |     /// // displays last stop of a redirect loop | ||||||
|  |     /// let response = reqwest::get("http://site.with.redirect.loop"); | ||||||
|  |     /// match response { | ||||||
|  |     ///   Err(e) => if e.is_redirect() { | ||||||
|  |     ///      let final_stop = match e.url() { | ||||||
|  |     ///          Some(url) => url, | ||||||
|  |     ///          None      => return, | ||||||
|  |     ///      }; | ||||||
|  |     ///      println!("Last redirect led to: {}", final_stop); | ||||||
|  |     ///   }, | ||||||
|  |     ///   _       => return, | ||||||
|  |     /// }; | ||||||
|  |     /// # } | ||||||
|  |     /// ``` | ||||||
|     #[inline] |     #[inline] | ||||||
|     pub fn url(&self) -> Option<&Url> { |     pub fn url(&self) -> Option<&Url> { | ||||||
|         self.url.as_ref() |         self.url.as_ref() | ||||||
| @@ -24,6 +88,26 @@ impl Error { | |||||||
|     /// |     /// | ||||||
|     /// The `'static` bounds allows using `downcast_ref` to check the |     /// The `'static` bounds allows using `downcast_ref` to check the | ||||||
|     /// details of the error. |     /// details of the error. | ||||||
|  |     /// | ||||||
|  |     /// # Examples | ||||||
|  |     /// | ||||||
|  |     /// ``` | ||||||
|  |     /// // retries requests with no host on localhost | ||||||
|  |     /// # fn run() { | ||||||
|  |     /// let invalid_request = "http://"; | ||||||
|  |     /// let mut response = reqwest::get(invalid_request); | ||||||
|  |     /// match response { | ||||||
|  |     ///   Err(e) => match e.get_ref() { | ||||||
|  |     ///     Some(internal_error) => if internal_error.description() == "empty host" { | ||||||
|  |     ///       let valid_request = format!("{}{}",invalid_request, "localhost"); | ||||||
|  |     ///       response = reqwest::get(&valid_request); | ||||||
|  |     ///     }, | ||||||
|  |     ///     _          => return, | ||||||
|  |     ///   }, | ||||||
|  |     ///   _      => return, | ||||||
|  |     /// }; | ||||||
|  |     /// # } | ||||||
|  |     /// ``` | ||||||
|     #[inline] |     #[inline] | ||||||
|     pub fn get_ref(&self) -> Option<&(StdError + Send + Sync + 'static)> { |     pub fn get_ref(&self) -> Option<&(StdError + Send + Sync + 'static)> { | ||||||
|         match self.kind { |         match self.kind { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user