模型类抛出异常后无法被捕获?

来源:2-5 模型类

MrLion2042

2016-10-13 19:24


<?php
namespace core\lib;
class model extends \PDO{
    public function __construct(){
        $dsn = "mysql:host=localhost;dbname=test";
        $username = "root";
        $password = "wrongpw";
        try{
            parent::__construct($dsn,$username,$password);
        }catch(\PDOExpcetion $e){
            echo $e->getMessage();
	    }
    }
}

按照老师的代码,故意将数据库密码写错,执行时抛出的异常不能被捕获而报错,这是为什么呢?PS:密码不写错,则程序运行正常,model类可以正常执行CURD语句。

报错信息如下:

查资料看着是抛出的pdoexception对象未被捕获才会这样报错。

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)' in D:\xampp\htdocs\MoocFramework\FW\core\lib\model.php:13 Stack trace: #0 D:\xampp\htdocs\MoocFramework\FW\core\lib\model.php(13): PDO->__construct('mysql:host=loca...', 'root', '1234561') #1 D:\xampp\htdocs\MoocFramework\FW\app\ctrl\indexCtrl.php(11): core\lib\model->__construct() #2 D:\xampp\htdocs\MoocFramework\FW\core\imooc.php(37): app\ctrl\indexCtrl->index() #3 D:\xampp\htdocs\MoocFramework\FW\index.php(30): core\imooc::run() #4 {main} thrown in D:\xampp\htdocs\MoocFramework\FW\core\lib\model.php on line 13


写回答 关注

1回答

  • slcheng
    2016-10-18 13:45:09
    已采纳

    太粗心了,仔细看你的代码,

    catch(\PDOExpcetion $e){

                echo $e->getMessage();

            }

    PDOExpcetion 这个单词写错了,应该是PDOException,咋会犯这种低级错误。。 IDE不会提示吗

    slchen... 回复MrLion...

    我用的是PHPstorm,你可以试试

    2016-10-21 20:56:14

    共 4 条回复 >

从零开始打造自己的PHP框架

和我一起开发一套属于自己的PHP框架,自己开发的才是最好用的

48187 学习 · 162 问题

查看课程

相似问题