PHP try catch未捕获异常/异常

PHP try catch未捕获异常/异常,php,pdo,try-catch,Php,Pdo,Try Catch,我在try catch块中有一些PDO插入代码。我故意将错误的值传递给execute函数,这样插入就会失败。即。; 在声明为主列的列上插入重复值。经测试,在控制台上执行insert查询时失败,出现错误: #1062 - Duplicate entry '0' for key 'PRIMARY' 但是,我的try--catch块没有捕获此异常。是因为PHP不会对重复条目抛出异常吗?我是PHP新手。一直在网上搜索,但似乎找不到线索: try { $query = $conn-&g

我在try catch块中有一些PDO插入代码。我故意将错误的值传递给execute函数,这样插入就会失败。即。; 在声明为主列的列上插入重复值。经测试,在控制台上执行insert查询时失败,出现错误:

#1062 - Duplicate entry '0' for key 'PRIMARY' 
但是,我的try--catch块没有捕获此异常。是因为PHP不会对重复条目抛出异常吗?我是PHP新手。一直在网上搜索,但似乎找不到线索:

try
 {  
     $query = $conn->prepare($preSQL);
     $query->execute($postSQL);  //$postSQL is the associative array for placeholders
     $dataAdded = $query->rowCount();
     $lastInsertId = $this->conn->lastInsertId();
 }
catch(PDOException $e)
 {
    fwrite($myfile,PHP_EOL);
    fwrite($myfile,$e->getMessage());
    fclose($myfile);
    return false;
 }
  • 步骤:
  • 将此代码添加到页面顶部:

    error_reporting(E_ALL);
    ini_set("display_errors", 1);
    ini_set("display_startup_errors", 1);
    
    仅在开发模式下使用错误报告(E_ALL)

  • 台阶
  • 在$conn=new PDO(…)之后添加下面的代码

  • 步骤:
  • 将此代码添加到页面顶部:

    error_reporting(E_ALL);
    ini_set("display_errors", 1);
    ini_set("display_startup_errors", 1);
    
    仅在开发模式下使用错误报告(E_ALL)

  • 台阶
  • 在$conn=new PDO(…)之后添加下面的代码


    您可能需要包括PDO异常

    use PDO;
    use PDOException;
    

    您可能需要包括PDO异常

    use PDO;
    use PDOException;
    

    检查这里:检查这里:这意味着:它不会抛出致命错误,并且您的错误处理级别太低。让我帮你修好。不过,例外情况仍然是转义catch块。实际上,我的php.ini已经配置为报告错误。下面是php.ini中的值:error\u reporting=E\u ALL&~E\u DEPRECATED&~E\u STRICT display\u errors=On display\u startup\u errors=On这意味着:它不会抛出致命错误,并且错误处理级别太低。让我帮你修好。不过,例外情况仍然是转义catch块。实际上,我的php.ini已经配置为报告错误。下面是php.ini中的值:error\u reporting=E\u ALL&~E\u DEPRECATED&~E\u STRICT display\u errors=On display\u startup\u errors=On