我只想處理某些查詢異常代碼。剩下的我想放手;這樣我才能得到正常的調試或哎呀,出錯了屏幕,這取決於我的環境。在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