当异常被捕获时,Laravel具有可读的日志和堆栈跟踪,例如:
Log::error(json_encode(debug_backtrace()));
问题是:是否可以自己捕获异常,并记录相同的堆栈跟踪格式,并继续执行程序。到目前为止,我正在通过try {
foo();
} catch(\Exception $e) {
Log::error(json_encode(debug_backtrace()));
}
bar();
记录错误,这真的很难看并且难以追踪。示例代码:
capture
答案 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();
由于必须实例化它,所以它有点丑陋,但是它给了您通常会得到的相同错误报告,包括您可能为其他日志记录通道进行的任何自定义设置等。