Laravel - HTTP Client - Throwing Exceptions

If you have a response instance and would like to throw an instance of Illuminate\Http\Client\RequestException if the response status code indicates a client or server error, you may use the throw or throwIf methods:

    $response = Http::post(...);
    // Throw an exception if a client or server error occurred...
    // Throw an exception if an error occurred and the given condition is true...
    return $response['user']['id'];

The Illuminate\Http\Client\RequestException instance has a public $response property which will allow you to inspect the returned response.

The throw method returns the response instance if no error occurred, allowing you to chain other operations onto the throw method:

    return Http::post(...)->throw()->json();

If you would like to perform some additional logic before the exception is thrown, you may pass a closure to the throw method. The exception will be thrown automatically after the closure is invoked, so you do not need to re-throw the exception from within the closure:

    return Http::post(...)->throw(function ($response, $e) {