所以基本上我希望能够以某种方式做一些if语句来检查抛出了什么异常,以便我echo出一些适当的错误消息,例如
如果exception是MySQL中的重复记录异常,则echo "User Already exists";
所以下面我捕获了异常,它打印了默认的异常错误消息,但是这对用户来说看起来不太好,所以我想检查错误是什么,然后打印出用户能够识别的适当的错误消息……例如“用户已存在”。
try{
$query = "INSERT INTO user VALUES ('', 0, $safe_email, '$hashed_password')";
$result = $db->query($query);
echo '<script type="text/javascript"> alert(\'You have successfully registered.\n A confirmation email has been sent to you.\'); window.location = \'index.php\'; </script>';
}
catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}发布于 2014-03-22 22:15:45
您应该首先检查用户是否以“非异常”的方式存在,因为从MySQL异常中获取相关和一致的信息是不可能的,或者至少是相当棘手的。
例如,如果您突然决定向表中添加一个id字段并将其设置为主键,您的算法将会崩溃。如果您通过识别错误号或其他方法来解析MySQL错误,那么您与数据库的耦合也非常紧密,因此切换到MariaDB或Postgres或其他任何格式可能会很棘手……
将异常留给真正特殊的情况,例如
UserModel->usernameExists("Adam"),它在两种情况下都返回false。但是,如果用户A在用户B尝试注册的两周前注册,UserModel->usernameExists("Adam")将只返回用户B的true,您可以显示一个漂亮的错误-或者在注册表中显示用户名已被占用。
https://stackoverflow.com/questions/22578589
复制相似问题