ken*_*in9 3 exception-handling exception abort laravel-5.1
当我想在后端处理期间停止操作时,我一直在抛出异常.我忘记了我可以使用Laravel abort()方法.有没有理由使用abort()而不是抛出异常?它几乎做同样的事情吗?
我也问,因为我注意到,当我拖尾我的日志时,abort()没有显示堆栈跟踪,但是抛出Exception确实如此.在这些情况下我不需要堆栈跟踪,因为我知道它为什么失败了.我也不希望日志从这些已知的故障中大量增长.
我们来看看代码:
/**
* Throw an HttpException with the given data.
*
* @param int $code
* @param string $message
* @param array $headers
* @return void
*
* @throws \Symfony\Component\HttpKernel\Exception\HttpException
* @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
*/
public function abort($code, $message = '', array $headers = array())
{
if ($code == 404)
{
throw new NotFoundHttpException($message);
}
throw new HttpException($code, $message, null, $headers);
}
Run Code Online (Sandbox Code Playgroud)
所以看起来该abort方法只是一个帮助器,NotFoundHttpException如果代码404被传递则抛出一个,否则抛出一个HttpException.
我不确定为什么抛出Exception会导致日志记录而不使用abort().您可能希望检查异常处理程序,并查看是否以不同方式捕获和处理不同类型的异常.
您不应该担心日志文件的大小.这些天存储非常便宜,文本占用空间非常小.您从日志中获得的知识远远超过其实际成本.