我试图在这里实现的是,当pdo连接抛出异常时,我的自定义异常处理程序接收消息并将其传递给我,因此我可以使用自定义异常处理程序捕获它。
try {
$mysqli = new PDO('mysql:host='.THOST.';dbname='.TDB.'', TUSER, TPASS);
}
catch (PDOException $e) {
$a = $e->getMessage();
throw new customException ( "Failed to connect to MySQL:". $a );
die();
}
catch (customException $e){
echo $e->errorMessage();
}
但它返回此错误: 致命错误:带有消息的未捕获异常'customException'......
答案 0 :(得分:0)
将其包裹在另一个try-catch块中。
try {
try {
$mysqli = new PDO('mysql:host='.THOST.';dbname='.TDB.'', TUSER, TPASS);
} catch(PDOException $e) {
$a = $e->getMessage();
throw new customException ( "Failed to connect to MySQL:". $a );
}
} catch(customException $e) {
echo $e->errorMessage();
// Do what you want
}
答案 1 :(得分:0)
您将自定义异常处理程序与自定义异常类混淆。你需要前一个,另一个答案是错误的。
解释。
在您的应用程序代码中,您必须只编写一行:
$pdo = new PDO('mysql:host='.THOST.';dbname='.TDB.'', TUSER, TPASS);
没有多次尝试和东西。只需要运行的代码。
虽然所有处理逻辑都进入handler