我不知道怎样才能抓住PDOException
在下面的代码中,请告诉我下面的代码中哪里抛出异常?
我有(目录):
- folder
-1) b.php
-2) c.php
- autoloader
in the b.php
:
<?php
namespace folder;
use folder as x;
require_once '../autoload.php';
class b{
function __construct(){
print("<p>you are in class b<p/>");
}
}
$t=new x\c();
?>
and in c.php
:
class c{
function __construct(){
print("<p>you are in class c<p/>");
if(DB_TYPE == 'mysql')
$pdoString=DB_TYPE.':dbname='.DB_NAME.';host='.DB_HOST;
$pdoUsername=DB_USERNAME;
$pdoPass='1';//DB_PASS; in this line I enter wrong password
try{
$this->pdo = new PDO($pdoString, $pdoUsername, $pdoPass);
}catch(PDOException $e){ //we can't catch exception here!
die('<p> Error DataBase Connection: '.$e->getMessage()."</p>");
}
}
}
?>
我输入了错误的密码,我希望在我的中捕获异常try catch
块但有以下输出:
you are in class c
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)' in C:\xampp\htdocs\TEST\folder\c.php:17 Stack trace: #0 C:\xampp\htdocs\TEST\folder\c.php(17): PDO->__construct('mysql:dbname=kn...', 'root', '1') #1 C:\xampp\htdocs\TEST\folder\b.php(10): folder\c->__construct() #2 {main} thrown in C:\xampp\htdocs\TEST\folder\c.php on line 17
您位于命名空间中。因此,PHP 将寻找命名空间类folder\PDOException
并尝试抓住它(但失败了)。
要使用全局命名空间,只需在类名后面添加反斜杠即可:
catch (\PDOException $e) {
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)