这似乎很奇怪。下面的课程工作正常,并显示Fatal error: Uncaught exception 'PDOException'
与我所期望的密码错误。PHP PDO异常与异常奇怪
但是,如果我将catch{Eception...
替换为catch{Exception...
,则不会显示错误,尽管密码错误。
我已经试过
$class_methods = get_class_methods(new Eception);
foreach ($class_methods as $method_name) {
echo "$method_name\n";
}
和类不存在,那么为什么它在我的数据库类工作的时候Exception
不?
<?php
class Database{
private $host = 'localhost';
private $user = 'root';
private $pass = 'wrong_password';
private $dbname = 'blog';
private $dbh;
private $error;
private $stmt;
public function __construct(){
// Set DSN
$dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname;
// Set options
$options = array(
PDO::ATTR_PERSISTENT => TRUE,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
);
// Create new PDO
try{
$this->dbh = new PDO($dsn, $this->user, $this->pass, $options);
} catch(Eception $e){ // weird behaviour with Exception vs Eception
$this->error = $e->getMessage();
}
}
}
好的,所以我已将Eception更改为Exception,并回显'$ e-> getMessage()'。现在我有一个很好的干净的错误消息。谢谢。 – Robin
@Robin你不应该回应$ e-> getMessage(),并且不应该有一个很好的干净的错误信息。您不是您网站的唯一用户。 –
当然,但为了学习的目的,这是好的,对吧? – Robin