Enum aws_smithy_runtime_api::client::result::SdkError
source · #[non_exhaustive]pub enum SdkError<E, R> {
ConstructionFailure(ConstructionFailure),
TimeoutError(TimeoutError),
DispatchFailure(DispatchFailure),
ResponseError(ResponseError<R>),
ServiceError(ServiceError<E, R>),
}
Expand description
Failed SDK Result
When logging an error from the SDK, it is recommended that you either wrap the error in
DisplayErrorContext
, use another
error reporter library that visits the error’s cause/source chain, or call
Error::source
for more details about the underlying cause.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
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>>,
) -> Self
pub fn construction_failure( source: impl Into<Box<dyn Error + Send + Sync>>, ) -> Self
Construct a SdkError
for a construction failure
sourcepub fn timeout_error(source: impl Into<Box<dyn Error + Send + Sync>>) -> Self
pub fn timeout_error(source: impl Into<Box<dyn Error + Send + Sync>>) -> Self
Construct a SdkError
for a timeout
sourcepub fn dispatch_failure(source: ConnectorError) -> Self
pub fn dispatch_failure(source: ConnectorError) -> Self
Construct a SdkError
for a dispatch failure with a ConnectorError
sourcepub fn response_error(
source: impl Into<Box<dyn Error + Send + Sync>>,
raw: R,
) -> Self
pub fn response_error( source: impl Into<Box<dyn Error + Send + Sync>>, raw: R, ) -> Self
Construct a SdkError
for a response error
sourcepub fn service_error(source: E, raw: R) -> Self
pub fn service_error(source: E, raw: R) -> Self
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 + 'static>, Self>
pub fn into_source(self) -> Result<Box<dyn Error + Send + Sync + 'static>, Self>
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