Laravel-处理程序未捕获$ exception

时间:2018-10-11 22:08:01

标签: php laravel exception-handling

在我的Laravel 5.6应用程序中,使用throw $e似乎将异常直接输出到屏幕并绕过Handler.php异常处理程序。这意味着在开发中该异常不会由高声显示,而在生产中不会报告该异常。

在撰写本文时,我意识到我可能使用了不正确的try / catch,但也许有人可以确认这一点?

我当前的代码:

    try{
        $stockLocation = StockLocation::findOrFail($request->location_id);
    } catch (\Exception $e){
        if($e instanceof ModelNotFoundException){
            throw new UserNotifyException('This stock location could not be found on the system', 404);
        }
        throw $e;
    }

我在这里的意图是重新抛出不是“未找到模型”的任何异常,我希望可以用完全没有try catch的相同方式来处理它?<​​/ p>

我现在意识到我应该将以上内容写为:

    try{
        $stockLocation = StockLocation::findOrFail($request->location_id);
    } catch (ModelNotFoundException $e){
          throw new UserNotifyException('This stock location could not be found on the system', 404);
    }

除此之外,还有更好的方法来处理我不记录的异常吗?当前,我将异常转换为自己的自定义异常类(UserNotifyException),然后在Handler.php中确保未报告此异常。

0 个答案:

没有答案