2017-01-06 50 views
4

我有以下的方法,发出一封电子邮件:Laravel 5 - 如何捕获Mail :: send()错误?

Mail::send('emails.configuration_test', array(), function($email)use($request){ 
    $email->to($request->test_address)->subject('Configuration Test'); 
}); 

如果上面的错误了,我希望能够捕获异常。当我使用以下内容:

try{ 
    Mail::send('emails.configuration_test', array(), function($email)use($request){ 
     $email->to($request->test_address)->subject('Configuration Test'); 
    }); 
} 
catch(Exception $e){ 
    // Never reached 
} 

该例外从未被捕获。相反,如果send()方法出错,我会得到Laravel堆栈跟踪作为响应。

在这种情况下如何捕捉异常?

+1

如果文件被命名空间,你需要'赶上(\ $例外E)'(或者把'使用Exception'在文件的顶部)。现在,它可能会捕获类似于“App \ Http \ Controllers \ Exception”的内容。 http://php.net/manual/en/language.namespaces.php – ceejayoz

+0

或导入它的顶部。我认为他有。 – devk

+3

@devk如果他在catch(Exception $ e)之后获得堆栈跟踪,他就没有。 – ceejayoz

回答

12

使用根名称空间\Exception做了诀窍。

相反的:

catch(Exception $e){ 
    // Never reached 
} 

我用:

catch(\Exception $e){ 
    // Get error here 
}