如何在Laravel中的异常后继续执行?

时间:2015-01-30 08:21:47

标签: php laravel laravel-4 exception-handling

您有一个从CSV文件导入新用户的功能。 如果用户的密码字段为空,我会得到一个 Cartalyst \ Sentry \ Users \ PasswordRequiredException

我正在尝试捕获此异常并将消息存储到会话变量中,但我希望在异常发生后继续导入其余用户。

目前我正在使用此处理程序:

App::error(function(Cartalyst\Sentry\Users\PasswordRequiredException $exception)
{
    Session::push('import.errors', $exception->getMessage());
});

使用XDebug我已经确定处理程序已被触发 - 但是在错误发生后执行也会停止。

如何继续导入CSV中的其他用户?

1 个答案:

答案 0 :(得分:2)

您需要捕获函数导入新用户的异常,然后您可以选择忽略它:

your_import_function($users_to_be_imported)
{
     foreach ($users_to_be_imported as $user) {
         try {
             // Import user code here
         } catch (Cartalyst\Sentry\Users\PasswordRequiredException $exception) {
             // Log user that failed here
         }
     }
 }

因为您正在捕捉函数中的异常 - 它不应该“冒泡”到App::error()函数