Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 所有例外情况下的Laravel电子邮件通知_Php_Laravel_Exception Handling - Fatal编程技术网

Php 所有例外情况下的Laravel电子邮件通知

Php 所有例外情况下的Laravel电子邮件通知,php,laravel,exception-handling,Php,Laravel,Exception Handling,我正在开发一个项目,我想有一个通知系统,特别是“第一天的生活”-收到电子邮件,每次异常抛出 我已经读过并实现了它所说的。我的问题是App\Exception\Handler.php中的函数report() 我的问题: 我有一个AdminController和一个在数据库中插入一些数据的函数。查询位于try/catch中: try { // commands } catch (\Exception $e){ Log::channel('admin_submissions')->

我正在开发一个项目,我想有一个通知系统,特别是“第一天的生活”-收到电子邮件,每次异常抛出

我已经读过并实现了它所说的。我的问题是
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(“触发器”)
功能(如下所示)

我怎样才能保证在每个例外情况下(无论何处)都会发送一封电子邮件?

App\Exceptions\Handler.php

我修改了report函数,只是为了检查异常是否确实通过该函数:

 public function report(Exception $exception)
    {
        dd("trigger");

        if ($this->shouldReport($exception)) {
            app('sneaker')->captureException($exception);
        }

        parent::report($exception);
    }

您必须首先知道您的应用程序引发的异常类型,可能是在
$dontReport
中引发的异常。如果是,您必须首先从该表中删除所有异常,然后才能获得该异常的报告。您的目的是在电子邮件中接收错误的“日志”。我的建议是使用错误处理服务,它只需要一个小时就可以集成到您的应用程序中。请参阅:Sentry将通过电子邮件通知您每个错误,并提供一个界面来浏览应用程序中的所有错误。从控制器代码中删除try catch并检查是否要报告function@ShaielndraGupta这可能会起作用,但我不能这样做,因为我使用了一个DB事务,并且在出现错误时必须使用
DB::rollback()
-另外,我记录了不同类型的情况,我希望保持该文件的日志记录如果在
try{}
中抛出异常,该异常将被捕获,因此不会由异常处理程序处理。
$dontReport
是一个空数组,因此我认为它应该捕获任何异常,对吗?是的!删除放入
AdminController
的try catch。由于该
try/catch
块,异常发出将不会由
App\Exceptions\Handler
处理,而是由您的
catch
块处理。如果我在
AdminController.php
中删除
try/catch
,我如何控制我的
DB::beginTransaction()
如果在
AdminController.php
中出现
catch
,我想您应该说的是在~AdminController
中引发异常的情况下。调用数据库后,您如何处理数据库?您可以在
报告中的
App\Exceptions\Handler`中执行任何操作
,您可以对数据库执行一些查询,等等