您好,登錄后才能下訂單哦!
PHP中怎么定義異常處理,針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
具體如下:
<?php //php5提供了基本的異常處理類,可直接使用 ,不需要自己再定義 // class Exception // { // protected $message = 'Unknown exception'; // 異常信息 // protected $code = 0; // 用戶自定義異常代碼 // protected $file; // 發(fā)生異常的文件名 // protected $line; // 發(fā)生異常的代碼行號 // function __construct($message = null, $code = 0); // final function getMessage(); // 返回異常信息 // final function getCode(); // 返回異常代碼 // final function getFile(); // 返回發(fā)生異常的文件名 // final function getLine(); // 返回發(fā)生異常的代碼行號 // final function getTrace(); // backtrace() 數(shù)組 // final function getTraceAsString(); // 已格成化成字符串的 getTrace() 信息 // /* 可重載的方法 */ // function __toString(); // 可輸出的字符串 // } ?>
<?php //定義一個頂級異常處理 function my_exception($e){ echo "我是頂級異常處理".$e->getMessage(); } //修改默認的頂級異常處理函數(shù)(器) set_exception_handler("my_exception"); //我們使用異常機制 try{ addUser("shunping"); updateUser("xiaoming1"); } //catch用來 捕獲異常, Exception 是異常類(是php定義好一個類) catch(Exception $e){ //返回異常信息 echo "返回異常信息(失敗信息) =".$e->getMessage()."<br/>"; echo "返回異常代碼 =".$e->getCode()."<br/>"; echo "返回發(fā)生異常的文件名 =".$e->getFile()."<br/>"; echo "返回發(fā)生異常的代碼行號 =".$e->getLine()."<br/>"; //echo " =".$e->getTrace()."<br/>"; // backtrace() 數(shù)組 //可以繼續(xù)拋出,這時將會啟動php默認的異常處理器來處理 //你也可以自己定義一個頂級異常處理器,對其進行處理 throw $e; } function addUser($username){ if($username=="shunping"){ //添加ok echo "ok1"; }else{ //添加error //拋出異常. throw new Exception("添加失敗"); } } function updateUser($username){ if($username=="xiaoming"){ //正常修改 echo "ok2"; }else{ //平拋出異常 throw new Exception("修改失敗"); } } ?>
異常使用的注意事項 :
通過上面的案例,我們可以看出,使用
try{ //代碼 }catch(Exception $e){ //對異常處理 }
這種方式,可以更有效的控制錯誤.所以在開發(fā)中大量的使用.
1. 當捕獲到一個異常后,try{} 塊里的后續(xù)代碼不繼續(xù)執(zhí)行.
2. 如果有一個異常發(fā)生,但是你沒有catch 捕獲,則提示一個Uncaught Exception.(系統(tǒng).)
3. 當catch一個異常,你可以處理,也可以不處理,不處理就可以throw new Exception("信息");
4. 你可以自定義異常類
class MyException extends Exception { }
5. 使用多個 catch 代碼塊可以捕獲不同種類的異常
try{ //代碼.... //第一句話 //第二句話 }catch(PDOException $e){ // }catch(Exception $e){ | }
6. 也可簡單使用 Exception 捕獲
代碼說明:
<?php //定義了一個異常 class MyException1 extends Exception{ } class MyException2 extends Exception{ } function A(){ throw new MyException1("a"); } function B(){ throw new MyException2("b") } function C(){ try{ A();//拋出MyException1 B();//拋出MyException2 }catch(Exception1 $e1){ $e1->getMessage(); }catch(Exception2 $e2){ $e2->getMesage(); } } ?>
異常的規(guī)則
需要進行異常處理的代碼應(yīng)該放入 try 代碼塊內(nèi),以便捕獲潛在的異常。
每個 try 或 throw 代碼塊必須至少擁有一個對應(yīng)的 catch 代碼塊。
使用多個 catch 代碼塊可以捕獲不同種類的異常。
可以在 try 代碼塊內(nèi)的 catch 代碼塊中拋出(再次拋出)異常。
簡而言之:如果拋出了異常,就必須捕獲它?;蛘呤褂庙敿壆惓L幚砥魈幚怼?br/>如果不拋,即使有異常也不會捕獲,不會處理
關(guān)于PHP中怎么定義異常處理問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。