pub type SdkError<E, R = HttpResponse> = SdkError<E, R>;
Expand description
Error type returned by the client.
Aliased Type§
enum SdkError<E, R = HttpResponse> {
ConstructionFailure(ConstructionFailure),
TimeoutError(TimeoutError),
DispatchFailure(DispatchFailure),
ResponseError(ResponseError<R>),
ServiceError(ServiceError<E, R>),
}
Variants§
ConstructionFailure(ConstructionFailure)
The request failed during construction. It was not dispatched over the network.
TimeoutError(TimeoutError)
The request failed due to a timeout. The request MAY have been sent and received.
DispatchFailure(DispatchFailure)
The request failed during dispatch. An HTTP response was not received. The request MAY have been sent.
ResponseError(ResponseError<R>)
A response was received but it was not parseable according the the protocol (for example the server hung up without sending a complete response)
ServiceError(ServiceError<E, R>)
An error response was received from the service
Implementations
Source§impl<E, R> SdkError<E, R>
impl<E, R> SdkError<E, R>
Sourcepub fn construction_failure(
source: impl Into<Box<dyn Error + Send + Sync>>,
) -> SdkError<E, R>
pub fn construction_failure( source: impl Into<Box<dyn Error + Send + Sync>>, ) -> SdkError<E, R>
Construct a SdkError
for a construction failure
Sourcepub fn timeout_error(
source: impl Into<Box<dyn Error + Send + Sync>>,
) -> SdkError<E, R>
pub fn timeout_error( source: impl Into<Box<dyn Error + Send + Sync>>, ) -> SdkError<E, R>
Construct a SdkError
for a timeout
Sourcepub fn dispatch_failure(source: ConnectorError) -> SdkError<E, R>
pub fn dispatch_failure(source: ConnectorError) -> SdkError<E, R>
Construct a SdkError
for a dispatch failure with a ConnectorError
Sourcepub fn response_error(
source: impl Into<Box<dyn Error + Send + Sync>>,
raw: R,
) -> SdkError<E, R>
pub fn response_error( source: impl Into<Box<dyn Error + Send + Sync>>, raw: R, ) -> SdkError<E, R>
Construct a SdkError
for a response error
Sourcepub fn service_error(source: E, raw: R) -> SdkError<E, R>
pub fn service_error(source: E, raw: R) -> SdkError<E, R>
Construct a SdkError
for a service failure
Sourcepub fn into_service_error(self) -> E
pub fn into_service_error(self) -> E
Returns the underlying service error E
if there is one
If the SdkError
is not a ServiceError
(for example, the error is a network timeout),
then it will be converted into an unhandled variant of E
. This makes it easy to match
on the service’s error response while simultaneously bubbling up transient failures.
For example, handling the NoSuchKey
error for S3’s GetObject
operation may look as
follows:
match sdk_err.into_service_error() {
GetObjectError::NoSuchKey(_) => {
// handle NoSuchKey
}
err @ _ => return Err(err),
}
Sourcepub fn as_service_error(&self) -> Option<&E>
pub fn as_service_error(&self) -> Option<&E>
Returns a reference underlying service error E
if there is one
§Examples
if sdk_err.as_service_error().map(|e|e.is_not_found()) == Some(true) {
println!("the object doesn't exist");
// return None, or handle this error specifically
}
// ... handle other error cases, happy path, etc.
Sourcepub fn into_source(self) -> Result<Box<dyn Error + Send + Sync>, SdkError<E, R>>
pub fn into_source(self) -> Result<Box<dyn Error + Send + Sync>, SdkError<E, R>>
Converts this error into its error source.
If there is no error source, then Err(Self)
is returned.
Sourcepub fn raw_response(&self) -> Option<&R>
pub fn raw_response(&self) -> Option<&R>
Return a reference to this error’s raw response, if it contains one. Otherwise, return None
.
Sourcepub fn map_service_error<E2>(self, map: impl FnOnce(E) -> E2) -> SdkError<E2, R>
pub fn map_service_error<E2>(self, map: impl FnOnce(E) -> E2) -> SdkError<E2, R>
Maps the service error type in SdkError::ServiceError