抓住Zend的PDO异常(Catch Zend PDO Exception)

2019-10-28 12:55发布

我想知道如果我可以把一个尝试捕捉有关$application->bootstrap()->run();
这将赶上pdo exceptions

这工作,但它抓住每一个例外,我不想要的。

try {
    $application->bootstrap()->run();
} catch (Exception $e) {
    print_r($e);
}

我有PDO异常讨厌的事件是遥,距离的application.ini显示密码!

值得注意的,我曾尝试PDOException,它不得到捕获。

我的DB是建立在引导的run()与

    try {
        $db = $this->getPluginResource('db')->getDbAdapter();
        Zend_Registry::set('dbAdapter', $db);
    } catch (Exception $e) {
        echo 1;exit;
    }

需要注意的是,如果我放错了密码,并在本地运行应用程序,我不看,1,我看到一个空白页,即使错误报告上。

Answer 1:

去哪里你的数据库代码,并把try周围的代码捕获。 如果你只想要PDO例外再搭上只有PdoException。 把像抓(PdoExcetion_OR_What_Its_Name_Is $ E)(和禁用错误输出到屏幕上。写你的错误日志文件)



Answer 2:

如果我理解正确的问题,它的意思是你想抓住你的数据库连接异常

而这将是如下这些行一样简单:

try {
    $db = Zend_Db::factory('Pdo_Mysql', $parameters);
    $db->getConnection();
} catch (Zend_Db_Adapter_Exception $e) {
    // perhaps a failed login credential, or perhaps the RDBMS is not running
} catch (Zend_Exception $e) {
    // perhaps factory() failed to load the specified Adapter class
}

基本getConnection功能正在尝试连接与参数数据库,如果失败,将抛出一个Zend_Db_Adapter_Exception如果成功地连接它会返回PDO object

同样,你可以用这个模式来抓住你Zend_Db异常或PDO_Exceptions在控制器类或把这些样的错误的模型,而不是整个应用程序



Answer 3:

这似乎很奇怪,试图搭上了整个应用程序。 禁用错误报告(如display_errors设置在php.ini)将是好了很多,停止从露出异常uncatched任何敏感信息。

但是,为了回答你的问题:

try {
    $application->bootstrap()->run();
} catch (PDOException $e) {
    print_r($e);
}

这应该只捕获异常PDO。



文章来源: Catch Zend PDO Exception