PHP:如何从另一个类中的方法捕获异常?

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-

我使用一个类进行数据库连接,这个类包含CRUD方法,还有数据库连接方法

它基本上是使用DB的所有其他类的核心

在插入记录时,我目前面临一个处理唯一列中重复条目的问题

Database.class.phpinsertDB方法:

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);