The RaiseError middleware raises a Faraday::Error exception if an HTTP response returns with a 4xx or 5xx status code. All exceptions are initialized providing the response status, headers, and body.

begin
  conn.get('/wrong-url') # => Assume this raises a 404 response
rescue Faraday::ResourceNotFound => e
  e.response[:status]   #=> 404
  e.response[:headers]  #=> { ... }
  e.response[:body]     #=> "..."
end

Specific exceptions are raised based on the HTTP Status code, according to the list below:

An HTTP status in the 400-499 range typically represents an error by the client. They raise error classes inheriting from Faraday::ClientError.

  • 400 => Faraday::BadRequestError
  • 401 => Faraday::UnauthorizedError
  • 403 => Faraday::ForbiddenError
  • 404 => Faraday::ResourceNotFound
  • 407 => Faraday::ProxyAuthError
  • 409 => Faraday::ConflictError
  • 422 => Faraday::UnprocessableEntityError
  • 4xx => Faraday::ClientError

An HTTP status in the 500-599 range represents a server error, and raises a Faraday::ServerError exception.

  • 5xx => Faraday::ServerError

The HTTP response status may be nil due to a malformed HTTP response from the server, or a bug in the underlying HTTP library. It inherits from Faraday::ServerError.

  • nil => Faraday::NilStatusError