Mint.HTTPError exception (Mint v1.3.0) View Source

An HTTP error.

This exception struct is used to represent HTTP errors of all sorts and for both HTTP/1 and HTTP/2.

A Mint.HTTPError struct is an exception, so it can be raised as any other exception.


The Mint.HTTPError struct is opaque, that is, not all of its fields are public. The list of public fields is:

  • :reason - the error reason. Can be one of:

    • a term of type Mint.HTTP1.error_reason/0. See its documentation for more information.
    • a term of type Mint.HTTP2.error_reason/0. See its documentation for more information.
    • {:proxy, reason}, which is used when an HTTP error happens when connecting to a tunnel proxy. reason can be:
      • :tunnel_timeout - when the tunnel times out.
      • {:unexpected_status, status} - when the proxy returns an unexpected status status.
      • {:unexpected_trailing_responses, responses} - when the proxy returns unexpected responses (responses).

Message representation

If you want to convert an error reason to a human-friendly message (for example for using in logs), you can use Exception.message/1:

iex> {:error, %Mint.HTTPError{} = error} = Mint.HTTP.connect(:http, "", 80)
iex> Exception.message(error)
"the response contains two or more Content-Length headers"

Link to this section Summary


Callback implementation for Exception.message/1.

Link to this section Types


proxy_reason() ::
   | Mint.HTTP2.error_reason()
   | :tunnel_timeout
   | {:unexpected_status, non_neg_integer()}
   | {:unexpected_trailing_responses, list()}}


t() :: %Mint.HTTPError{
  __exception__: term(),
  module: term(),
    | Mint.HTTP2.error_reason()
    | proxy_reason()
    | term()

Link to this section Functions

Callback implementation for Exception.message/1.