Laravel 5.5 自定义异常处理

Laravel 5.5 custom exception handling

我正在使用 Laravel 5.5 并且是新手。关于错误处理,我发现 Laravel 有许多内置的外观和功能,但是,我似乎并没有全神贯注于它提供的所有功能(最初是为了让我的生活更轻松)。

我想要的是每当发生错误(即抛出异常)时,Laravel 应将用户重定向到上一页并显示错误消息(不是错误本身,您不希望用户能够在生产中看到这一点;我想到了 'Error occurred' 之类的东西。

我在我的所有视图中包含了一个错误显示,所以我只需要传递(我想是通过 POST)一个数组 messagetitlemessage,以及 style(使用 Bootstrap 样式,例如 dangerwarningsuccess)。理想情况下,异常记录在某处,这样我以后就可以重现错误。

我目前的解决方案没有 Laravel 的好功能,因为我到处都是 try-catch 并重定向到特定页面(我选择 'the right one' 因为这个错误).此外,这会抑制原始错误。

满足我愿望的最佳方法是什么?

看看 Laravel 的异常处理程序:https://laravel.com/docs/5.5/errors#the-exception-handler

您可以通过实施自定义 render() 方法来实现您想要的效果,该方法会 return 重定向响应。

The render method is responsible for converting a given exception into an HTTP response that should be sent back to the browser.

这是我的解决方案,它排除了验证,因此支持 Laravel 的内置验证错误,而其他所有错误的显示方式不同:

Log::error($exception->getMessage());
if($exception instanceof \Illuminate\Validation\ValidationException)
   return parent::render($request, $exception);

return redirect(URL::previous())->withErrors(['Error', 'Unknown Error']);

感谢@jedrzej.kurylo 发布了关于从哪里开始的解决方案。上面的代码应该在/App/Exceptions/Handler.php下使用,函数render.