gpt4 book ai didi

php - 没有在命名空间中捕获 PDOException

转载 作者:可可西里 更新时间:2023-11-01 13:11:21 25 4
gpt4 key购买 nike

我不知道如何在下面的代码中捕获PDOException,请告诉我在下面的代码中哪里抛出异常?

我有(目录):

 - folder
-1) b.php
-2) c.php

- autoloader

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

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 block 中捕获到异常,但输出如下:

 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 并 try catch 它(并失败)。

要使用全局命名空间,只需在类名后面加一个反斜杠即可:

catch (\PDOException $e) {

关于php - 没有在命名空间中捕获 PDOException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13614484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com