我只想处理某些查询异常代码。剩下的我想放手;这样我才能得到正常的调试或哎呀,出错了屏幕,这取决于我的环境。在Laravel中仅捕获某些(查询)异常代码
我目前在我的routes.php
文件中有下面的代码,它似乎工作。但这是否是正确的做法?
// Query Exceptions
App::error(function(QueryException $exception)
{
$allowedCodes = array(
'23000', // Integrity constraint violation
);
if (in_array($exception->getCode(), $allowedCodes))
{
return Response::view('errors.show', array('code' => 'query_error_' . $exception->getCode()));
}
else
{
App::error(function(QueryException $exception){});
}
});
更新,这里是我结束了基于亚雷克Tkaczyk的答案的解决方案:
App::error(function(QueryException $exception)
{
$allowedCodes = array(
'23000', // Integrity constraint violation
);
if (in_array($exception->getCode(), $allowedCodes) && !App::environment('local'))
{
Log::warning('QueryException', array('context' => $exception->getMessage()));
return Response::view('errors.show', array('code' => 'query_error_' . $exception->getCode()));
}
});
你'else'什么都不做。 – 2014-09-19 09:58:27
但它似乎按照我的意图工作,除23000以外的异常代码给出调试异常消息。那是因为我什么都没有回来? – 2014-09-19 10:02:17
是的,它按预期工作。 Howeveer'else'这样做:注册空的错误处理程序,而您已经在错误处理程序中。这件作品不会像“q”标题中提到的那样“重新抛出”错误,就这些。 – 2014-09-19 10:10:38