#[non_exhaustive]pub enum SdkError<E, R> {
ConstructionFailure(ConstructionFailure),
TimeoutError(TimeoutError),
DispatchFailure(DispatchFailure),
ResponseError(ResponseError<R>),
ServiceError(ServiceError<E, R>),
}
client
only.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
Trait Implementations§
Source§impl<E, R> Error for SdkError<E, R>
impl<E, R> Error for SdkError<E, R>
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
Source§impl<E, R> From<BuildError> for SdkError<E, R>
impl<E, R> From<BuildError> for SdkError<E, R>
Source§fn from(value: BuildError) -> Self
fn from(value: BuildError) -> Self
Source§impl<E, R> ProvideErrorMetadata for SdkError<E, R>where
E: ProvideErrorMetadata,
impl<E, R> ProvideErrorMetadata for SdkError<E, R>where
E: ProvideErrorMetadata,
Source§fn meta(&self) -> &ErrorMetadata
fn meta(&self) -> &ErrorMetadata
Auto Trait Implementations§
impl<E, R> Freeze for SdkError<E, R>
impl<E, R> !RefUnwindSafe for SdkError<E, R>
impl<E, R> Send for SdkError<E, R>
impl<E, R> Sync for SdkError<E, R>
impl<E, R> Unpin for SdkError<E, R>
impl<E, R> !UnwindSafe for SdkError<E, R>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more