Laravel 5 - 如何捕获邮件:: send()错误?

Llo*_*nks 22 laravel laravel-5 laravel-mail

我有以下方法发送电子邮件:

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

如果出现上述错误,我希望能够捕获异常.当我使用以下内容时:

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

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

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

Llo*_*nks 43

使用根命名空间\Exception就可以了.

代替:

catch(Exception $e){
    // Never reached
}
Run Code Online (Sandbox Code Playgroud)

我用了:

catch(\Exception $e){
    // Get error here
}
Run Code Online (Sandbox Code Playgroud)

  • 这真的是使用异常的好方法吗?我们不能为邮件发送错误创建一个更具体的异常并捕获它吗?我正在搜索框架以寻找要捕获的异常,但找不到 :( 我想这里的主要目标是在邮件发送失败时让代码继续运行,而不是停止执行和中止。但是捕获的通用例外并没有很清楚地表达这个意图。只是我的看法。 (2认同)