当我想在后端处理期间暂停操作时,我一直在抛出异常。我忘记了我可以使用Laravel abort()方法。有没有理由使用abort()而不是抛出异常?它几乎做同样的事情吗?
我也在问,因为我注意到,当我拖尾我的日志时,abort()没有显示堆栈跟踪,但是抛出异常。在这些情况下我不需要堆栈跟踪,因为我知道它为什么失败了。我也不希望日志从这些已知的失败中大量增长。
答案 0 :(得分:5)
让我们来看看代码:
/**
* 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);
}
所以看来abort
方法只是一个助手,如果传递代码NotFoundHttpException
则抛出404
,否则会抛出HttpException
。
我不确定为什么在使用Exception
时抛出abort()
会导致日志记录。您可能希望检查异常处理程序,并查看是否以不同方式捕获和处理不同类型的异常。
您不应该担心日志文件的大小。这些天存储非常便宜,文本占用空间非常小。您从日志中获得的知识将远远超过其实际成本。