亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

模型類拋出異常后無法被捕獲?


<?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 回答

太粗心了,仔細看你的代碼,

catch(\PDOExpcetion?$e){

????????????echo?$e->getMessage();

????????}

PDOExpcetion 這個單詞寫錯了,應該是PDOException,咋會犯這種低級錯誤。。 IDE不會提示嗎

0 回復 有任何疑惑可以回復我~
#1

MrLion2042 提問者

確實是寫錯了。非常感謝!
2016-10-18 回復 有任何疑惑可以回復我~
#2

slcheng 回復 MrLion2042 提問者

這種問題很好排查的,首先正確的時候沒任何錯誤,說明try及其上面的代碼是沒問題的,進到catch里邊才出問題,我第一個想到的是是不是exception的類型有問題,然后看你下邊貼出來的報錯,確實是PDOException的異常未被捕獲,這就奇怪了,然后一看居然是你把單詞寫錯了。。。 話說一般的編輯器都會有提示的,你寫錯單詞會被標紅就知道了
2016-10-18 回復 有任何疑惑可以回復我~
#3

MrLion2042 提問者

sublime text3用那款插件可以進行提示這樣的語法錯誤?有推薦的唄?我現在用的sublime linter未標記語法錯誤。
2016-10-19 回復 有任何疑惑可以回復我~
#4

slcheng 回復 MrLion2042 提問者

我用的是PHPstorm,你可以試試
2016-10-21 回復 有任何疑惑可以回復我~
查看1條回復

舉報

0/150
提交
取消

模型類拋出異常后無法被捕獲?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號