主頁 > 知識庫 > PHP異常類及異常處理操作實例詳解

PHP異常類及異常處理操作實例詳解

熱門標(biāo)簽:打開百度地圖標(biāo)注 兼職做地圖標(biāo)注好賺錢嗎 海南外呼系統(tǒng)方案 亳州企業(yè)外呼系統(tǒng) 400 電話 辦理 山東電銷卡外呼系統(tǒng)原理是什么 地圖標(biāo)注怎么做商戶驗證 蘇州外呼系統(tǒng)有效果嗎 智能電銷語音機(jī)器人資訊

本文實例講述了PHP異常類及異常處理操作。分享給大家供大家參考,具體如下:

異常處理歸類于錯誤處理,PHP從5.1.0開始增加了Exception異常處理類。

一、異常處理

PHP 異常處理與Java相似,都使用try、throw、catch語句,發(fā)生異常時代碼。如果異常沒有被捕獲,而且又沒用使用 set_exception_handler() 作相應(yīng)的處理的話,那么將發(fā)生一個嚴(yán)重的錯誤(致命錯誤),并且輸出 "Uncaught Exception" (未捕獲異常)的錯誤消息。

1、try:

用于可能發(fā)生異常的代碼塊。

2、throw:

規(guī)定如何觸發(fā)(trigger)異常,用于拋出異常。每一個throw必須對應(yīng)至少一個catch。

3、catch:

捕獲異常,并創(chuàng)建包含異常信息的對象。

說明:姑且認(rèn)為php的異常必須throw才能捕獲到。

基本結(jié)構(gòu):

try{
#some codes
throw new Exception("message"[,code[,...]]);
}
catch(Exception $ex){
#some codes
}

二、PHP 異?;怑xception

類摘要:

Exception {
/* 屬性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 方法 */
public __construct ([ string $message = "" [, int $code = 0 [, Exception $previous = NULL ]]] )
final public string getMessage ( void )
final public Exception getPrevious ( void )  //獲取異常鏈中前一個異常
final public int getCode ( void )
final public string getFile ( void )
final public int getLine ( void )
final public array getTrace ( void )   //獲取異常追蹤信息
final public string getTraceAsString ( void )  //字符串方式返回異常追蹤信息
public string __toString ( void )
final private void __clone ( void )
}

說明:

由該基類可看出,php異常對象主要包含異常的文本信息(message)、異常代碼/代號(code,應(yīng)該是用于開發(fā)人員標(biāo)識)、異常發(fā)生的文件(file,即發(fā)生異常的php文件)、異常發(fā)生的具體位置(line,拋出異常的行號)。

示例:

?php
try {
 throw new Exception("Some error message", 30);//拋出異常,設(shè)置異常代號為30
} catch(Exception $e) {
 echo "Exception:file:".$e->getFile().",message:" . $e->getMessage().",code:".$e->getCode()."line:".$e->getLine();
}
?>

瀏覽器打印結(jié)果:

Exception:file:D:\studyFolder\wamp\workspace\basicphp\testException.php,message:Some error message,code:30line:3

關(guān)于php中類與對象的基礎(chǔ)(如方法調(diào)用),具體看類與對象小節(jié)。

三、自定義異常類

示例:

class customException extends Exception
 {
 public function errorMessage()
 {
 //error message
 $errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile()
 .': b>'.$this->getMessage().'/b> is not a valid E-Mail address';
 return $errorMsg;
 }
 }

拋出與捕獲該異常:

try{
throw new customException("這是自定義異常。");
}
catch(customException $ex){
#some codes
}

四、多catch捕獲異常

當(dāng)一個try語句中可能拋出不同的異常時,對應(yīng)的可有多個catch塊捕獲不同類型異常。同java中的一些注意點:

1、大異常catch放后面。因為拋出異常時按順序判斷先滿足哪個catch,一次僅執(zhí)行一個catch。

2、執(zhí)行一次try,最多執(zhí)行一個catch(發(fā)生異常時),即若前面某個catch滿足執(zhí)行,則后面的catch不再考慮。(常見考題)

五、嵌套拋出異常

結(jié)構(gòu)示例:

try{
 try{
  throw new Exception("第一個異常");
 }
 catch(Exception $e1){
  #相關(guān)處理
  throw new Exception("處理后拋出異常");//再次拋出異常
 }
}
catch(Exception $e2){
 #相關(guān)處理
}

六、設(shè)置頂層異常處理器

set_exception_handler('myException'):函數(shù)設(shè)置所有未捕獲的異常的處理函數(shù)句柄(函數(shù)名,此處即myException)。

示例:

?php
function myException($exception)
{
echo "b>Exception:/b> " , $exception->getMessage();
}
set_exception_handler('myException');
throw new Exception('Uncaught Exception occurred');
?>

結(jié)果:

Exception:Uncaught Exception occurred

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP錯誤與異常處理方法總結(jié)》、《php字符串(string)用法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》

希望本文所述對大家PHP程序設(shè)計有所幫助。

您可能感興趣的文章:
  • PHP如何拋出異常處理錯誤
  • php中異常處理方法小結(jié)
  • PHP中的錯誤處理、異常處理機(jī)制分析
  • PHP中異常處理的一些方法整理
  • PHP異常處理Exception類
  • PHP 的異常處理、錯誤的拋出及回調(diào)函數(shù)等面向?qū)ο蟮腻e誤處理方法
  • PHP中常見的錯誤與異常處理總結(jié)大全
  • 一個顯示效果非常不錯的PHP錯誤、異常處理類
  • php 異常處理實現(xiàn)代碼
  • PHP中的異常處理機(jī)制深入講解

標(biāo)簽:清遠(yuǎn) 呼倫貝爾 金華 安康 萊蕪 溫州 紹興 綏化

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP異常類及異常處理操作實例詳解》,本文關(guān)鍵詞  PHP,異常,類,及,處理,操作,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP異常類及異常處理操作實例詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP異常類及異常處理操作實例詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章