繁体   English   中英

PDO无法捕获抛出的异常

[英]PDO Can't catch exception which is thrown

好的,所以我无法抓住这个例外:

require_once 'config/config.php';
try {
    $dbh = new PDO('mysql:host='.DB_HOST.';dbname='.DB_DATABASE, DB_USER, DB_PASS,array(
        PDO::ATTR_PERSISTENT => true,
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    ));
} catch (PDOException $e) {
    print "Unable to connect!: " . $e->getMessage() . BR;
    die();
}

try {
    $stmt = $dbh->prepare("SELECT id,email FROM no_table ORDER BY id DESC LIMIT 5");
    $stmt->execute();
    $stmt->bindColumn(1, $id, PDO::PARAM_INT);
    $stmt->bindColumn('email', $email, PDO::PARAM_STR);
    while ($row = $stmt->fetch(PDO::FETCH_BOUND)) {
        echo $id . "\t" . $email . BR;
    }
} catch (PDOException $e) {
    echo "Failed: " . $e->getMessage();
}

好吧我连接我在语法中有一个错误(没有任何no_table)它抛出异常,但我无法抓住它。 在浏览器中我看到:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S02]:
Base table or view not found: 1146 Table 'no_table' doesn't exist' in 'somepath'
PDOStatement->execute() #1 {main} thrown in some.php on line 15

抛出异常并且我无法捕获它,但如果我在$stmt->execute();之间另外尝试catch $stmt->execute(); 它抓住了它。

我的php版本5.3.14

你有没有在这个项目中使用命名空间类? 如果是这样,请尝试使用

\PDOException

代替

PDOException

在你的“捕获”声明中。 我遇到了类似的问题,这一举措有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM