如何引发PDOException?

时间:2012-06-15 12:34:30

标签: php exception pdo

这段代码工作正常,但是如果出现任何问题我会想要处理exception,所以我故意在query中出现语法错误,但没有任何反应。以下是代码

try {
    $sql = "INSERT INTO journals (topic, author, ) VALUES ('$topic', '$authors', ')";
    echo "1st";
    $lecturers_db->query($sql);
    echo "second";
} catch(PDOException $e) {
    echo $e->getMessage();
    echo $msg = "Error!";
} 

如果没有明显的语法错误,代码工作正常,但语法错误,没有任何反应,try block中的所有代码都执行,catch block中的代码永远不会执行。

我想提出一个exception,请问我该怎么做呢,谢谢你的帮助。

2 个答案:

答案 0 :(得分:8)

一旦初始化pdo对象,请务必将属性 PDO :: ATTR_ERRMODE 设置为 PDO :: ERRMODE_EXCEPTION

$lecturers_db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

之后,任何失败的查询都会引发异常

答案 1 :(得分:7)

抛出异常。代码中的语法错误!=例外。

<?php 
    try {
        $code = 12;
        throw new PDOException('Message', $code );
    } catch (PDOException $e) {

    }
?>

但是,来自maual

  

您不应该从自己的代码中抛出PDOException。请参阅例外情况   有关PHP中的异常的更多信息。

我的建议是抛出一般异常,或编写自己的自定义异常来处理错误。