我一起使用Stripe API和Laravel。如果Stripe检测到对卡充电错误(例如使用测试信用卡号码引发无效的安全代码错误),则API绑定应该抛出异常,他们这样做。问题是,在Laravel抛出错误500页之前,我遇到了捕获异常的问题(我正在尝试使用错误消息执行重定向)。
我写的代码可以在Pastebin上找到:http://pastebin.com/ZaW2xbbt
我期望的行为是catch
触发并执行重定向,但相反,我得到了带有消息的堆栈跟踪和“Unhandled Exception”。这让我感到困惑,因为我我处理异常。
$customer
之类的变量有效且之前已定义过。有什么想法正在发生什么?
答案 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
作为自定义异常处理/报告的入口点