php - PDO setAttribute 与 PDOException

标签 php mysql exception pdo

这是我目前正在使用的功能:

function pdo_connect(){
  try {

      $pdo = new PDO('mysql:host=localhost;dbname='.DB_NAME, DB_USER, DB_PASS);
      $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);     
      $pdo->setAttribute( PDO::ATTR_EMULATE_PREPARES, false );           
      $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

  } catch (PDOException $e) {

      die("Error!: " . $e->getMessage() . "<br/>");

  }

  return $pdo;
}

但是想想我用过这个

$pdo->setAttribute( INVALID_SYNTAX, false );

我不想看到 fatal error :

Fatal error: Undefined class constant 'INVALID_SYNTAX' in C:\xampp\htdocs\test.php on line 12

我想捕获异常,那该怎么做/?

最佳答案

未定义常量错误不是异常,而是编译错误。这就像一个语法错误,它是您代码中需要修复的基本错误。在运行时捕获它没有意义。这实际上也是不可能的。

常量 INVALID_SYNTAX 也永远不会触发“未定义的 class 常量”错误,只会触发“普通”未定义常量 错误。 p>


异常是用来处理运行时的异常错误的。异常错误是在正常执行期间不应该发生的错误,但您已做好万一发生的准备。
错误输入的常量总是会导致错误,而且总是同样的错误。这不是异常(exception),只是错误的代码。因此,想要在运行时动态处理它是没有意义的。

关于php - PDO setAttribute 与 PDOException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19111446/

相关文章:

PhpUnit 弃用通知 : error guessing kernel directory

php artisan 迁移 : Class Schema not found

java - 多对多 Spring Boot JPA 未填充 ManyToMany 表

mysql - 存储过程错误

java - Java 中使用 ArrayList 的异常处理

php - 如何获得 $date + 5 以排除周末?

php - 仅显示从 Blob 中检索到的一半图像

mysql - com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException : Unknown column 'poi' in 'where clause'

python - 如何在 Python 中包装内置方法? (或 'how to pass them by reference' )

php - 使用 php 和 smarty 以水平方式显示数组数据