pub struct Error { /* private fields */ }Expand description
An error type that wraps an inner type-erased boxed std::error::Error or an Exn frame.
In that, it’s similar to anyhow, but with support for tracking the call site and trees of errors.
§Native error sources
Error::from_error() retains the concrete error and its native source() chain.
Use Error::downcast_any_ref() or Error::iter_errors() to inspect the original types, including sources
within nested Error values. This also applies when the auto-chain-error feature is enabled.
§The auto-chain-error feature
If it’s enabled, this type is merely a wrapper around ChainedError. This happens automatically
so applications that require this don’t have to go through an extra conversion.
When both the tree-error and auto-chain-error features are enabled, the tree-error
behavior takes precedence and this type uses the tree-based representation.
Implementations§
Source§impl Error
Utilities
impl Error
Utilities
Sourcepub fn error(&self) -> &(dyn Error + 'static)
pub fn error(&self) -> &(dyn Error + 'static)
Return the error stored at this error boundary.
This can be a classification marker hidden from Self::iter_errors(), and is distinct from
Self::probable_cause().
Source§impl Error
impl Error
Sourcepub fn iter_errors(&self) -> impl Iterator<Item = &(dyn Error + 'static)> + '_
pub fn iter_errors(&self) -> impl Iterator<Item = &(dyn Error + 'static)> + '_
Lazily visit stored errors and native sources in logical breadth-first order, expanding nested crate::Error values.
The stored error is first unless it is a classification marker. A frame’s native source precedes its explicitly
raised children. Concrete error types remain available for downcasting, except for classification markers,
which are always transparent to traversal.
Use Self::classify() to inspect classifications.
Sourcepub fn iter_errors_with_locations(
&self,
) -> impl Iterator<Item = DisplaySource<'_>> + '_
pub fn iter_errors_with_locations( &self, ) -> impl Iterator<Item = DisplaySource<'_>> + '_
Visit the same errors as Self::iter_errors(), with caller locations for explicitly raised frames.
The first real source beneath transparent classification markers inherits their frame’s location; other native
sources have no caller location of their own. DisplaySource can render either representation.
Sourcepub fn downcast_any_ref<T: Error + 'static>(&self) -> Option<&T>
pub fn downcast_any_ref<T: Error + 'static>(&self) -> Option<&T>
Find the first diagnostic error that downcasts to T in logical breadth-first order.
Classification markers are omitted, as in Self::iter_errors().
Sourcepub fn probable_cause(&self) -> &(dyn Error + 'static)
pub fn probable_cause(&self) -> &(dyn Error + 'static)
Follow the unique causal path to a leaf or aggregate, as in crate::exn::Frame::probable_cause().
Classification markers are always transparent to selection. Nested error graphs and explicitly raised children both participate, so a selected boundary at a branch is not replaced by one of its nested causes. If selection stays at the root, return the stored error, including a classification-only root.
Sourcepub fn metadata(&self) -> impl Iterator<Item = &Metadata> + '_
pub fn metadata(&self) -> impl Iterator<Item = &Metadata> + '_
Visit the non-empty Metadata dictionaries of crate::Message contexts in error traversal order.
Dictionaries remain separate. Functions returning metadata document the keys in each context.
To match a class and values on the same message, use Self::classify() and
Classification::error() instead of combining independent classification
and metadata searches.
Sourcepub fn classify(&self) -> Classifications<'_> ⓘ
pub fn classify(&self) -> Classifications<'_> ⓘ
Return all known classifications in the same logical breadth-first order as Self::iter_errors().
Unknown errors are omitted. Classifications aren’t deduplicated because distinct errors may independently have the same meaning. Each item retains the classified error for downcasting and origin inspection.
Sourcepub fn is_retryable(&self) -> bool
pub fn is_retryable(&self) -> bool
Return true if any stored error or native source has an explicit crate::Class::Retryable classification.
crate::Message and crate::ClassificationMarker can supply this classification.
Nested crate::Error values are inspected recursively. Unlike Self::can_retry(), this does not infer
retryability from I/O error kinds.
Sourcepub fn is_resource_exhausted(&self) -> bool
pub fn is_resource_exhausted(&self) -> bool
Return true if any stored error or native source reports resource exhaustion.
This recognizes messages or markers with
crate::Class::ResourceExhaustion, std::collections::TryReserveError, and
std::io::ErrorKind::OutOfMemory, including within nested
crate::Error values.
Sourcepub fn can_retry(&self) -> bool
pub fn can_retry(&self) -> bool
Return true if any stored error, or an error in its source() chain, is:
- classified as
crate::Class::Retryable, or - classified as
crate::Class::Iowith kindInterruptedorTimedOut.
Nested crate::Error values are inspected recursively. false only means that no known retryable error was
found; it does not guarantee that retrying cannot succeed.
Sourcepub fn can_retry_lenient(&self) -> bool
pub fn can_retry_lenient(&self) -> bool
Apply Self::can_retry(), also accepting std::io::Error with kind UnexpectedEof, OutOfMemory,
BrokenPipe, AddrInUse, ConnectionAborted, ConnectionReset, or ConnectionRefused.
This applies a more lenient policy than Self::can_retry. Nested crate::Error values are inspected recursively.
false only means that no known retryable error was found; it does not guarantee that retrying cannot succeed.
Sourcepub fn is_corrupted(&self) -> bool
pub fn is_corrupted(&self) -> bool
Return true if malformed or internally inconsistent data caused the failure.
Sourcepub fn is_not_found(&self) -> bool
pub fn is_not_found(&self) -> bool
Return true if a requested resource was not found.
Sourcepub fn is_validation(&self) -> bool
pub fn is_validation(&self) -> bool
Return true if invalid input caused the failure.
Trait Implementations§
Source§impl Error for Error
impl Error for Error
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
Return the first source of an Exn error, or the source of a boxed error.
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()