溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP系列(七)PHP錯誤異常處理

發(fā)布時間:2020-07-09 08:35:35 來源:網(wǎng)絡 閱讀:311 作者:sswqzx 欄目:web開發(fā)

1、Php錯誤報告級別

1 E_ERROR?致命的運行錯誤。錯誤無法恢復,暫停執(zhí)行腳本。

2 E_WARNING?運行時警告(非致命性錯誤)。非致命的運行錯誤,腳本執(zhí)行不會停止。

4 E_PARSE?編譯時解析錯誤。解析錯誤只由分析器產(chǎn)生。

8 E_NOTICE?運行時提醒(這些經(jīng)常是你代碼中的bug引起的,也可能是有意的行為造成的。)

?error_reporting = E_ALL & ~E_NOTICE

2、自定義php錯誤報告方式

set_error_handler("myerrorfun");

$mess ="";

function ?myerrorfun($error_type,$error_message,$error_file,$error_line){

??????????? global $mess;

??????????? $mess.="發(fā)生錯誤級別為{$error_type}類型、錯誤消息<b>{$error_message}</b>,在文件夾{$error_file},第{$error_line}行。<br>";

}

getType($a);

echo"$mess";

顯示為:發(fā)生錯誤級別為8類型、錯誤消息Undefined variable: a,在文件夾C:\AppServ\www\index.php,第9行。

?set_error_handler($_type,$_message,$_errfile,$_errline) 函數(shù)設置用戶自定義的錯誤處理程序,然后觸發(fā)錯誤

?

3、php記錄錯誤日志

log_errors = on 開啟php日志

error_log =syslog? 將php日志寫到系統(tǒng)上去。

error_log = “c:/lamp/php_error.log”;自已指定一個存放目錄、與上面相斥

ini_set(“l(fā)og_errors”,“on”); 在php開發(fā)文件里設置

?

try{

??????????? echo"開始";

??????????? run();

}catch(Exception $e){

??????????? echo$e->getMessage()."<br>";

}

//當try{}里面不成功就拋出catch里面的異常

?

4、自定義異常類

//自定義異常類、必須是系統(tǒng)類Exception的子類

//如果繼承Exception類、重寫了構造方法、一定要調(diào)一下父類中被覆蓋的方法/

class ?MyBtException?extends ?Exception{

??????????? function__construct($mess){

?????????????????????? parent::__construct($mess);

??????????? }

??????????? functionchangBt(){

?????????????????????? echo"換個備胎";

??????????? }

}

try{

??????????? throw ?new ?MyBtException("車子胞胎");

??????????? echo"路況很好!";

}catch(MyBtException $e){

??????????? Echo ?$e->getMessage()."<br>";

??????????? $e->changBt()."<br>";

}

5、自定義多個異常類

??????????? //寫出對應這個異常解決方法, 就是一下正常類的結(jié)構

??????????? class?MyBtException ?extends ?Exception{

?????????????????????? function__construct($mess) {

?????????????????????????????????? parent::__construct($mess);

?????????????????????? }

?????????????????????? functionchangBt() {

?????????????????????????????????? echo"換上備胎!";

?????????????????????? }

??????????? }

??????????? class ?WcException ?extends ?Exception {

?????????????????????? functionpro() {

?????????????????????????????????? echo"去公廁<br>";

?????????????????????? }

??????????? }

??????????? class ?NoException ?extends ?Exception {

?????????????????????? functionpro() {

?????????????????????????????????? echo"買面色湊合一下!<br>";

?????????????????????? }

??????????? }

??????????? Class ?FlException ?extends ?Exception {

?????????????????????? functionpro() {

?????????????????????????????????? echo"走小路!<br>";

?????????????????????? }

??????????? }


class? Dm? {

??????????? function gowc($bj) {

?????????????????????? if(!$bj){

?????????????????????????????????? throw?new?WcException("馬桶不好用了");

?????????????????????? }

?????????????????????? echo"哈哈,事兒辦的很成功!<br>";

??????????? }

?

??????????? function?eat($time) {

?????????????????????? if(!$time){

?????????????????????????????????? thrownew NoException("起來晚了,早餐沒了!");

?????????????????????? }

?????????????????????? echo"吃的很好!<br>";

??????????? }

??????????? function dri($dz) {

?????????????????????? if(!$dz){

?????????????????????????????????? throw?new ?MyBtException("爆胎了");

?????????????????????? }

?????????????????????? echo"車開的不錯!<br>";

??????????? }

??????????? function?run($yu) {

?????????????????????? if(!$yu){

?????????????????????????????????? throw?new ?FlException("天下雪了, 高速封路了");

?????????????????????? }

?????????????????????? echo"高速很好走!<br>";

??????????? }

}

echo "早上起床<br>";


try{

??????????? $dm =new ?Dm();

??????????? // 1. 上廁所? (馬桶不好用了),去公廁

??????????? $dm-> gowc(true);

??????????? // 2. 吃早餐 (沒有早點),買面包

??????????? $dm-> eat(true);

??????????? //3. 開車上班 (爆tai)???????? 換下

??????????? $dm->dri(true);

?

??????????? //4. 上高速? (下雪)? 小路

??????????? $dm->run(false);

} catch(MyBtException ?$e) {???//? Exception $e = newException('');

??????????? echo$e->getMessage()."<br>";

??????????? //自定義類中的解決方法調(diào)用,解決了問題

??????????? $e->changBt()."<br>";

??????????? try {

??????????? }catch(Exception$e) {

??????????? }

} catch(NoException $e) {

??????????? echo$e->getMessage()."<br>";

??????????? $e->pro();

} catch(WcException $e) {

??????????? echo$e->getMessage()."<br>";

??????????? $e->pro();

} catch(Exception $e) {

??????????? echo$e->getMessage()."<br>";

??????????? //$e->pro();

}

??????????? echo"到公司開始工作<br>";

微信掃一掃?、關注公眾號

?? 不定時分享資料視頻

PHP系列(七)PHP錯誤異常處理

?


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI