2013-03-29 62 views
2

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

我写的代码可以在引擎收录:http://pastebin.com/ZaW2xbbt

我期待的行为是catch火,并进行重定向,而是,我得到堆栈跟踪与消息和“未处理的例外”。这让我感到困惑,因为我处理异常时我在am

诸如$customer之类的变量是有效的,并且先前已被定义。任何想法发生了什么?

+0

要捕捉laravel异常,使用'\ Exception' – itachi

+0

这似乎仍然显示默认的堆栈跟踪,无论我使用(root或其他)的前缀'Extension'的名称空间 –

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

} 

希望帮助!