2015-04-17 65 views
0

任何人都可以幫助我如何捕捉Laravel 4.2中的PDO異常?我可以使用App :: error和App :: fatal在/app/start/global.php中捕獲致命或運行時異常,但無法以任何方式捕獲PDO異常。我不想篡改Laravel基礎類。我試着註冊全局異常處理程序,但那並沒有奏效。目前我在我的global.php中有以下代碼:如何在Laravel 4.2中捕獲PDO異常?

App::error(function(Exception $exception, $code) 
{ 
    Log::error($exception); 

    return Response::view("errors.{$code}", array(), $code); 
}); 

App::error(function(RuntimeException $exception) 
{ 
    Log::error($exception); 

    return Response::view("errors.500", array(), 500); 
}); 

App::fatal(function($exception) 
{ 
    header("HTTP/1.1 500 Internal Server Error"); 
    echo '<center><h3>Sorry! Something is wrong with this request!</h3></center>'; 

    exit; 
}); 

App::error(function(InvalidUserException $exception) 
{ 
    Log::error($exception); 

    return Response::view('errors.401', array(), 401); 
}); 

如何在此處或任何需要的地方添加PDOException塊?

在此先感謝。

回答

0

我想這只是傳遞PDOException您關閉將趕上像錯誤:

App::error(function(\PDOException $exception) 
{ 
    Log::error($exception); 

    return Response::view('errors.401', array(), 401); 
}); 
+0

我想你的代碼,仍然顯示Laravel哎呦屏幕。我認爲在global.php中並沒有達到這一點。即使我在路由器級嘗試過,仍然沒有運氣! –

+0

它在我的情況下工作正常,我只是檢查出來,我把代碼放在'''global.php'''文件中,然後在控制器中我寫了破碎的查詢,並打印出從錯誤關閉返回的字符串。你能描述一下你調用這個壞的查詢的地方嗎?它應該沒有什麼區別,儘管''''global.php'''文件甚至在路由被觸及之前被觸發。 –

+0

爲了確認,您使用的是Laravel 4.2嗎?其實我正在通過更改連接字符串進行檢查。我的主要問題是我有一個CRON服務器,它從API中提取大量數據並放入數據庫。在此期間,有時站點與數據庫的連接會超時並拋出PDO異常。我試圖抓住這一點。 –