【发布时间】:2018-04-09 07:17:14
【问题描述】:
我的项目在“db.class.php”中使用 PDO 异常处理,这是所有库的全局文件,由于影响而无法更改。
在某个时间点,应用程序正在尝试连接新数据库,如果无法访问新数据库,则脚本应忽略此错误并继续执行。
新的数据库连接异常在“db.class.php”中处理,当我在连接新数据库时尝试处理异常时,异常处理无法正常工作,脚本在此时停止。
如果我在连接新数据库时没有处理异常,在这种情况下,脚本也会停止执行。
要求即使在这种情况下数据库由于任何问题而没有连接,脚本也应该继续执行而忽略错误。
代码:
try {
$newDb = new DB(DB_HOST_new, DB_NAME_new, DB_USER_new, DB_PASS_new, DB_UTC_TIMEZONE);
$isDbSsConnected = true ;
} catch (PDOException $exx) {
//throw new Exception('Unable to connect');
}
db.class.php
try {
$connection = new PDO( $dsn, $username, $password );
$connection->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
if ( $utc ) {
$this->setUtc( $connection );
}
$this->connection = $connection;
self::$connections[$dsn][$username] = self::$connectionCachingEnabled ? $this->connection : NULL;
} catch ( PDOException $ex ) {
throw new DbEx( "Initialize Failed: DSN = " . $dsn, DbEx::INIT_FAILED, $ex );
}
【问题讨论】:
-
您在命名空间中吗?在 catch 中尝试
\PDOException。 -
不,它不在命名空间内..
-
缓存通用异常怎么样? catch (Exception $e) { // 做事 }
-
也尝试过通用异常处理,但奇怪的是它也不起作用......
标签: php mysql pdo exception-handling