Andrew M
Andrew M

Reputation: 4288

Laravel Handle Exceptions

I am using the Stripe API and Laravel together. If Stripe detects an error charging the card (such as using a test credit card number that throws an invalid security code error), the API bindings are supposed to throw an exception, which they do. The problem is, I am having issues catching the exception before Laravel throws up the error 500 page (I am trying to perform a redirect with an error message instead).

The code I've written is available on Pastebin: http://pastebin.com/ZaW2xbbt

The behavior I'm expecting is for the catch to fire and the redirect to be performed, but instead, I get the stack trace with the message and "Unhandled Exception". That's confusing me because I am handling the exception.

Variables such as $customer are valid and have been defined previously. Any ideas what's going on?

Upvotes: 2

Views: 4392

Answers (2)

Luca C.
Luca C.

Reputation: 12594

Generally, all errors logged by Laravel are logged under storage/logs folder

Anyway, the 500 error could be a syntax/parse error, in such case the Laravel framework could be not yet loaded when the error occurs and if so, the exception is not lhandled by Laravel.

In this case you should access the apache/vargrant/whatif php error log in some way (dependently on your server capabilities and configuration), in my personal cases I have configured the server to put that logs in a /storage/logs/error_log.txt file such that I can access them as other Laravel server logs

Note that in Laravel 5, you have app/Exceptions/Handler.php as entry point for customize exception handling/reporting

https://laravel.com/docs/5.7/errors#the-exception-handler

Upvotes: 0

fideloper
fideloper

Reputation: 12293

For any future viewers, here's an article on error handling in laravel 4.

Laravel 4 lets you catch Exceptions by exception type. For instance, you can handle Symfony's HttpException and of its sub-classes by adding this to your code:

// Catch HttpException, NotFoundHttpException, etc etc
App::error(function(HttpException $exception, $code, $fromConsole)
{
    ...
});

Symfony HttpExceptions (used in Laravel) can be found here.

You can also throw this in a ServiceProvider:

<?php namespace My\Namespace;

use Illuminate\Support\ServiceProvider;
use Symfony\Component\HttpKernel\Exception\HttpException;

class MyServiceProvider extends ServiceProvider {

    public function register()
    {
            $this->app->error(function(HttpException $exception, $code, $fromConsole)
            {
                ...
            });
    }

}

Hope that helps!

Upvotes: 6

Related Questions