Laravel处理异常

时间:2013-03-29 03:39:34

标签: php exception laravel

我一起使用Stripe API和Laravel。如果Stripe检测到对卡充电错误(例如使用测试信用卡号码引发无效的安全代码错误),则API绑定应该抛出异常,他们这样做。问题是,在Laravel抛出错误500页之前,我遇到了捕获异常的问题(我正在尝试使用错误消息执行重定向)。

我写的代码可以在Pastebin上找到:http://pastebin.com/ZaW2xbbt

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

$customer之类的变量有效且之前已定义过。有什么想法正在发生什么?

2 个答案:

答案 0 :(得分:6)

对于未来的观众,这里有一篇关于error handling in laravel 4的文章。

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

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

可以找到Symfony HttpExceptions(在Laravel中使用)here

您也可以将它放在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)
            {
                ...
            });
    }

}

希望有所帮助!

答案 1 :(得分:0)

通常,Laravel记录的所有错误都记录在storage/logs文件夹下

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

在这种情况下,您应该以某种方式(取决于您的服务器功能和配置)访问apache / vargrant / whatif php错误日志,在我个人情况下,我已经配置了服务器以将该日志放入{{1} }文件,以便我可以像其他Laravel服务器日志一样访问它们

请注意,在Laravel 5中,您将/storage/logs/error_log.txt作为自定义异常处理/报告的入口点

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