Я только хочу обрабатывать определенные коды исключений для запроса. Остальное я хочу отпустить; так что я получаю регулярную отладку или Упс, что-то пошло не так screen, в зависимости от моей среды.Ловля только определенных кодов исключений (запроса) в 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){});
}
});
Update, здесь было решение, которое я в конечном итоге на основе ответа ЯРЕК 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' делает ничего. –
Но, похоже, он работает так, как я предполагаю, коды исключений, отличные от 23000, дают сообщение об ошибке отладки. Это потому, что я ничего не возвращаю? –
Да, работает как и ожидалось. Howeveer 'else' делает это: зарегистрируйте пустой обработчик ошибок, пока вы уже находитесь в обработчике ошибок. Эта часть не «перебрасывает» ошибку, как вы просили в заголовке q, вот и все. –