如何强制PDOException /到达catch块(php)

时间:2013-08-14 17:55:54

标签: php mysql exception-handling pdo

这是我的基本php代码:

try{
    $db = new PDO("mysql:dbname=name;host=localhost", $db_username, $db_password);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    //run queries etc...
} catch (PDOException $e) {
    //handle and log error appropriately 
}

是否有一种简单的方法可以到达catch块或强制PDOException,以便在发生数据库错误时我可以测试和/或调试页面?

2 个答案:

答案 0 :(得分:1)

伪造(坏)连接。如果你的数据库名称是'name',请输入'name1'。

-EDIT- downvote是什么?它有效...会评论,但我还不能。

答案 1 :(得分:1)

  

是否有一种简单的方法可以到达捕获区

是。像在任何其他情况下一样,只是强迫故意错误。

  

或强制PDOException

就像任何其他例外throw new PDOException('test');

一样

但是,要使连接代码抛出错误,必须将errmode设置设置为连接选项,因为在连接后设置此设置显然没用。

  

} catch(PDOException $ e){       //适当地处理和记录错误   }

这是处理错误的错误方式。创建并安装an exception handler。虽然您必须将try..catch用于其他目的。