处理异常


Laravel Handle Exceptions

我在一起使用Stripe API和Laravel。如果Stripe检测到对信用卡进行收费的错误(例如使用一个抛出无效安全码错误的测试信用卡号码),则API绑定应该抛出一个异常,它们确实会这样做。问题是,在Laravel抛出错误500页之前,我遇到了捕获异常的问题(我试图用错误消息代替执行重定向)。

我写的代码可在Pastebin: http://pastebin.com/ZaW2xbbt

我期望的行为是让catch触发并执行重定向,但相反,我得到了带有消息和"未处理的异常"的堆栈跟踪。这让我很困惑,因为我正在处理异常。

$customer这样的变量是有效的,并且已经在前面定义过了。知道是怎么回事吗?

对于任何未来的观众,这里有一篇关于laravel 4错误处理的文章。

Laravel 4允许您通过异常类型捕获异常。例如,你可以处理Symfony的HttpException和它的子类添加到你的代码:

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

Symfony HttpExceptions(在Laravel中使用)可以在这里找到。

你也可以在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)
            {
                ...
            });
    }
}

希望有帮助!

一般情况下,Laravel记录的所有错误都记录在storage/logs文件夹

无论如何,500错误可能是语法/解析错误,在这种情况下,当错误发生时,Laravel框架可能还没有加载,如果是这样,Laravel不会处理异常。

在这种情况下,你应该以某种方式访问apache/vargrant/whatif php错误日志(取决于你的服务器能力和配置),在我个人的情况下,我已经配置服务器将日志放在/storage/logs/error_log.txt文件中,这样我就可以像访问其他Laravel服务器日志一样访问它们

注意,在Laravel 5中,您有app/Exceptions/Handler.php作为自定义异常处理/报告的入口点

https://laravel.com/docs/5.7/errors异常处理器