Laravel 5.5 自定义异常处理
Laravel 5.5 custom exception handling
我正在使用 Laravel 5.5
并且是新手。关于错误处理,我发现 Laravel 有许多内置的外观和功能,但是,我似乎并没有全神贯注于它提供的所有功能(最初是为了让我的生活更轻松)。
我想要的是每当发生错误(即抛出异常)时,Laravel 应将用户重定向到上一页并显示错误消息(不是错误本身,您不希望用户能够在生产中看到这一点;我想到了 'Error occurred'
之类的东西。
我在我的所有视图中包含了一个错误显示,所以我只需要传递(我想是通过 POST)一个数组 message
和 title
和 message
,以及 style
(使用 Bootstrap 样式,例如 danger
、warning
、success
)。理想情况下,异常记录在某处,这样我以后就可以重现错误。
我目前的解决方案没有 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
.
我正在使用 Laravel 5.5
并且是新手。关于错误处理,我发现 Laravel 有许多内置的外观和功能,但是,我似乎并没有全神贯注于它提供的所有功能(最初是为了让我的生活更轻松)。
我想要的是每当发生错误(即抛出异常)时,Laravel 应将用户重定向到上一页并显示错误消息(不是错误本身,您不希望用户能够在生产中看到这一点;我想到了 'Error occurred'
之类的东西。
我在我的所有视图中包含了一个错误显示,所以我只需要传递(我想是通过 POST)一个数组 message
和 title
和 message
,以及 style
(使用 Bootstrap 样式,例如 danger
、warning
、success
)。理想情况下,异常记录在某处,这样我以后就可以重现错误。
我目前的解决方案没有 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
.