1

这是我目前使用的功能:

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 );

我不想看到致命错误:

致命错误:第 12 行 C:\xampp\htdocs\test.php 中未定义的类常量 'INVALID_SYNTAX'

我想捕获异常,然后怎么做/?

4

2 回答 2

2

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

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


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

于 2013-10-01T08:34:45.697 回答
1

实际上,捕捉开发阶段错误是没有意义的。

常量只能在开发阶段未定义。捕捉它没有任何用处——开发人员只需要定义它并继续前进。

异常是 PHP 中最容易被误解的机制之一。尽管它们实际上只能在可以以某种方式处理可恢复错误的情况下使用,但 PHP 用户可以通过所有适当的方式利用它:用于错误报告、数据验证或作为错误抑制运算符。

于 2013-10-01T08:54:44.123 回答