Laravel:捕获异常时是否可以记录堆栈跟踪,并继续执行?

时间:2018-03-07 01:21:19

标签: php laravel exception error-handling

当异常被捕获时,Laravel具有可读的日志和堆栈跟踪,例如:

Log::error(json_encode(debug_backtrace()));

问题是:是否可以自己捕获异常,并记录相同的堆栈跟踪格式,并继续执行程序。到目前为止,我正在通过try { foo(); } catch(\Exception $e) { Log::error(json_encode(debug_backtrace())); } bar(); 记录错误,这真的很难看并且难以追踪。示例代码:

capture

2 个答案:

答案 0 :(得分:2)

Laravel只为此提供了帮助方法,请参阅rescue方法。

return rescue(function () { 
    return $this->method(); 
});

使用您的示例,它看起来像:

rescue(function () { 
    return foo(); 
});

bar();

答案 1 :(得分:0)

您可以简单地手动调用应用程序的异常处理程序:

<?php
use App\Exceptions\Handler;

try {
    foo();
} catch(\Exception $e) {
    (new Handler(app()))->report($e);
}
bar();

由于必须实例化它,所以它有点丑陋,但是它给了您通常会得到的相同错误报告,包括您可能为其他日志记录通道进行的任何自定义设置等。