PHP:如何从另一个类中的方法捕获异常?
我使用一个类进行数据库连接,这个类包含CRUD方法,还有数据库连接方法 它基本上是使用DB的所有其他类的核心 在插入记录时,我目前面临一个处理唯一列中重复条目的问题 Database.class.phpinsertDB方法:PHP:如何从另一个类中的方法捕获异常?,php,mysql,database,exception,try-catch,Php,Mysql,Database,Exception,Try Catch,我使用一个类进行数据库连接,这个类包含CRUD方法,还有数据库连接方法 它基本上是使用DB的所有其他类的核心 在插入记录时,我目前面临一个处理唯一列中重复条目的问题 Database.class.phpinsertDB方法: class Database { (...) public function insertDB($sql,$params=null){ $con=$this->connect(); $query=$con-
class Database {
(...)
public function insertDB($sql,$params=null){
$con=$this->connect();
$query=$con->prepare($sql);
$query->execute($params);
$rs = $con->lastInsertId();
return $rs;
self::__destruct();
}
(...)
}
还有另一个类PersonDAO.class.php,它是继承Database.class的类
PersonDAO.class.php有自己的插入记录的方法,最终使用Database.class.php InsertBD方法
PersonDAO.class.phpinsert方法:(注意,在末尾调用insertDB)
它不会捕获重复条目异常,就好像没有错误一样
变量转储($rs)包含:
string(1) "0"
但它是否应该捕获异常并打印“无法插入记录。重复条目”?是否有任何“未捕获异常…”消息?也许,您首先需要在Database.class.phpinsertDB方法中捕获异常,然后抛出它
class Database {
(...)
public function insertDB($sql,$params=null){
try{
$con=$this->connect();
$query=$con->prepare($sql);
$query->execute($params);
$rs = $con->lastInsertId();
return $rs;
self::__destruct();
}
catch(Exception $e){
throw $e;
}
}
(...)
}
或者如果没有任何错误。检查
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
我只能想象发生的情况是错误报告被关闭,PDO没有设置为抛出异常
class Database {
(...)
public function insertDB($sql,$params=null){
try{
$con=$this->connect();
$query=$con->prepare($sql);
$query->execute($params);
$rs = $con->lastInsertId();
return $rs;
self::__destruct();
}
catch(Exception $e){
throw $e;
}
}
(...)
}
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);