我正在开发一个项目,希望有一个通知系统,特别是针对“上线的第一天” - 每次抛出异常时都会收到电子邮件通知。
我阅读了这篇文章并实施了它所说的内容。我的问题是,在我的控制器中抛出异常时,App\Exception\Handler.php
中的report()
函数不会触发。
我的问题: 我有一个AdminController和一个将一些数据插入数据库的函数。查询语句在try / catch中:
try {
// commands
} catch (\Exception $e){
Log::channel('admin_submissions')->info("Could not save submission. " . $e->getMessage());
return Redirect::back()->withErrors(['Could not save submission. Try again!']);
}
为了测试目的,我在try{}
中插入了一个错误,例如:
try {
$error = \Illuminate\Validation\ValidationException::withMessages([
'field_name_1' => ['Validation Message #1'],
'field_name_2' => ['Validation Message #2'],
]);
throw $error;
// commands
但是下面的dd("trigger")
函数没有被触发。
我应该如何设置,使得每当出现异常时(任何地方),都会发送一封电子邮件?
App\Exceptions\Handler.php
我修改了report函数,只是为了检查异常是否真的通过了该函数:
public function report(Exception $exception)
{
dd("trigger");
if ($this->shouldReport($exception)) {
app('sneaker')->captureException($exception);
}
parent::report($exception);
}
DB::rollback()
- 另外,我记录了不同类型的情况,我想保留那个文件日志。 - Antonios Tsimourtostry{}
中抛出异常,那么该异常将被捕获,因此不会被异常处理程序处理。 - Dragos