pub enum Error {
Transport(TransportError),
Protocol(ProtocolError),
Application(ApplicationError),
}
Expand description
Error type returned by all runtime library functions.
thrift::Error
is used throughout this crate as well as in auto-generated
Rust code. It consists of four variants defined by convention across Thrift
implementations:
Transport
: errors encountered while operating on I/O channelsProtocol
: errors encountered during runtime-library processingApplication
: errors encountered within auto-generated codeUser
: IDL-defined exception structs
The Application
variant also functions as a catch-all: all handler errors
are automatically turned into application errors.
All error variants except Error::User
take an eponymous struct with two
required fields:
kind
: variant-specific enum identifying the error sub-typemessage
: human-readable error info string
kind
is defined by convention while message
is freeform. If none of the
enumerated kinds are suitable use Unknown
.
To simplify error creation convenience constructors are defined for all
variants, and conversions from their structs (thrift::TransportError
,
thrift::ProtocolError
and thrift::ApplicationError
into thrift::Error
.
Variants§
Transport(TransportError)
Errors encountered while operating on I/O channels.
These include connection closed and bind failure.
Protocol(ProtocolError)
Errors encountered during runtime-library processing.
These include message too large and unsupported protocol version.
Application(ApplicationError)
Errors encountered within auto-generated code, or when incoming or outgoing messages violate the Thrift spec.
These include out-of-order messages and missing required struct fields.
This variant also functions as a catch-all: errors from handler
functions are automatically returned as an ApplicationError
.
Implementations§
Source§impl Error
impl Error
Sourcepub fn read_application_error_from_in_protocol<T: TInputProtocol>(
i: &mut T,
) -> Result<ApplicationError>
pub fn read_application_error_from_in_protocol<T: TInputProtocol>( i: &mut T, ) -> Result<ApplicationError>
Create an ApplicationError
from its wire representation.
Application code should never call this method directly.
Sourcepub fn write_application_error_to_out_protocol(
e: &ApplicationError,
o: &mut dyn TOutputProtocol,
) -> Result<()>
pub fn write_application_error_to_out_protocol( e: &ApplicationError, o: &mut dyn TOutputProtocol, ) -> Result<()>
Convert an ApplicationError
into its wire representation and write
it to the remote.
Application code should never call this method directly.