Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
- data HTTP2SessionException = forall e . Exception e => HTTP2SessionException e
- data FramerException = forall e . Exception e => FramerException e
- data BadPrefaceException = BadPrefaceException
- data HTTP11Exception = forall e . Exception e => HTTP11Exception e
- data HTTP11SyntaxException = HTTP11SyntaxException String
- data ClientSessionAbortedException = ClientSessionAbortedException ConnectionCloseReason
- data HTTP500PrecursorException = forall e . Exception e => HTTP500PrecursorException e
- data ConnectionCloseReason
- convertHTTP500PrecursorExceptionToException :: Exception e => e -> SomeException
- getHTTP500PrecursorExceptionFromException :: Exception e => SomeException -> Maybe e
- data ContentLengthMissingException = ContentLengthMissingException
- data IOProblem = forall e . Exception e => IOProblem e
- data GenericIOProblem = GenericIOProblem
- data StreamCancelledException = StreamCancelledException
- data HTTP2ProtocolException = HTTP2ProtocolException
Exceptions thrown by the HTTP/2 sessions
data HTTP2SessionException Source
Abstract exception. All HTTP/2 exceptions derive from here
forall e . Exception e => HTTP2SessionException e |
data FramerException Source
Abstract exception. Thrown when encoding/decoding of a frame fails
forall e . Exception e => FramerException e |
data BadPrefaceException Source
Thrown when the HTTP/2 connection prefix doesn't match the expected prefix.
data HTTP11Exception Source
Abstract exception. All HTTP/1.1 related exceptions derive from here. Notice that this includes a lot of logical errors and they can be raised when handling HTTP/2 sessions as well
forall e . Exception e => HTTP11Exception e |
data ClientSessionAbortedException Source
Concrete Exception. Used internally to signal that the server broke the connection. This is a public exception that clients of the library will see when acting as an HTTP client.
data HTTP500PrecursorException Source
Abstract exception. It is an error if an exception of this type bubbles to this library, but we will do our best to handle it gracefully. All internal error precursors at the workers can thus inherit from here to have a fallback option in case they forget to handle the error. This exception inherits from HTTP11Exception
forall e . Exception e => HTTP500PrecursorException e |
data ConnectionCloseReason Source
Reasons for a remote server interrupting a connectionn of this client
NormalTermination_CCR | Corresponds to NO_ERROR |
SessionAlreadyClosed_CCR | A request was done after the session was previously closed. |
IOChannelClosed_CCR | This one happens when one of the IO channels is closed and a BlockedIndefinitelyOnMVar bubbles up. It should only happen in the test suite, as the OpenSSL_TLS channel uses a specialized exception type. If you see it in the wild, it is a bug. |
ProtocolError_CCR | Any other reason |
convertHTTP500PrecursorExceptionToException :: Exception e => e -> SomeException Source
Use the traditional idiom if you need to derive from HTTP500PrecursorException
,
this is one of the helpers
getHTTP500PrecursorExceptionFromException :: Exception e => SomeException -> Maybe e Source
Use the traditional idiom if you need to derive from HTTP500PrecursorException
,
this is one of the helpers
data ContentLengthMissingException Source
Thrown with HTTP1.1 over HTTP1.1 sessions when the response body or the request body doesn't include a Content-Length header field, given that should have included it
Exceptions related to the IO layer
Throw exceptions derived from this (e.g, GenericIOProblem
below)
to have the HTTP/2 session to terminate gracefully.
data GenericIOProblem Source
A concrete case of the above exception. Throw one of this
if you don't want to implement your own type. Use
IOProblem
in catch signatures.
data StreamCancelledException Source
This exception will be raised inside a CoherentWorker
when the underlying
stream is cancelled (STREAM_RESET in HTTP/2). Do any necessary cleanup
in a handler, or simply use the fact that the exception is asynchronously
delivered
to your CoherentWorker Haskell thread, giving you an opportunity to
interrupt any blocked operations.
Internal exceptions
data HTTP2ProtocolException Source
Concrete exception. Used internally to signal that the client violated the protocol. Clients of the library shall never see this exception.