5

这段代码运行良好,但如果出现任何问题,我会想处理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,请问我该怎么做,谢谢您的帮助。

4

2 回答 2

8

确保在初始化 pdo 对象后立即将属性PDO::ATTR_ERRMODE设置为PDO::ERRMODE_EXCEPTION

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

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

于 2012-06-15T12:39:12.493 回答
7

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

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

    }
?>

但是,从maual

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

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

于 2012-06-15T12:37:31.777 回答