2015-04-17 68 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异常。我试图抓住这一点。 –