2

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

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

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

变量如$customer是有效的并且之前已经定义过。有什么想法吗?

4

2 回答 2

6

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

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

// 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)
            {
                ...
            });
    }

}

希望有帮助!

于 2013-07-07T01:31:35.780 回答
0

通常,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#the-exception-handler

于 2019-01-07T08:37:34.107 回答