我试图在PHP中抛出异常,但它不会抛出。当我故意给出密码字符串时(虽然我的localhost
上没有密码)但它会出现这个错误:
SQLSTATE [HY000] [1045]拒绝访问用户' root' @' localhost' (使用密码:是)。
虽然它应该抛出我的自定义错误消息。如果我故意将localhost
写为focalhost
或将用户名从root
更改为hoot
,则不会抛出我的自定义异常消息。
<?php
try{
$con = new PDO("mysql:host = localhost; dbname = chatdump", "root","");
if(!$con){
throw new Exception("There was some error connecting to database");
}
}
catch(Exception $e){
echo $e->getMessage();
}
?>
答案 0 :(得分:0)
异常会停止进一步执行,因此永远不会执行您的条件。
但更重要的是,您抛出这样一个自定义但无用的错误消息的想法是错误的。您永远不应该将有用的精确错误消息重写为模糊的通知。
你应该做的是单独留下你的PDOException,然后在某个地方捕获它,然后处理它。它可以是整个代码的全局try-catch,也可以是专用的错误处理程序。
您应该了解,有两种不同类型的人需要了解错误:负责网站和网站访问者的工作人员。两者都需要完全不同的错误消息。但是,您正在剥夺前者从解决网站问题所需的错误消息。
那你应该做什么
最近我写了一篇关于PHP error reporting的文章,你可能会觉得这篇文章很有意思。