一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP異常類及異常處理操作實例詳解

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

2019-07-15 10:21天涯海角路 PHP教程

這篇文章主要介紹了PHP異常類及異常處理操作,結合實例形式較為詳細的分析了php異常與異常處理相關操作技巧與注意事項,需要的朋友可以參考下

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

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

一、異常處理

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

1、try:

用于可能發生異常的代碼塊。

2、throw:

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

3、catch:

捕獲異常,并創建包含異常信息的對象。

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

基本結構:

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

二、PHP 異常基類Exception

類摘要:

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,應該是用于開發人員標識)、異常發生的文件(file,即發生異常的php文件)、異常發生的具體位置(line,拋出異常的行號)。

示例:

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

瀏覽器打印結果:

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

關于php中類與對象的基礎(如方法調用),具體看類與對象小節。

三、自定義異常類

示例:

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捕獲異常

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

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

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

五、嵌套拋出異常

結構示例:

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

六、設置頂層異常處理器

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

示例:

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

結果:

Exception:Uncaught Exception occurred

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产亚洲精品激情一区二区三区 | 好湿好紧太硬了我太爽了网站 | 亚洲精品资源 | 免费成年人在线视频 | 亚洲国产成人精品不卡青青草原 | 日韩精品福利视频一区二区三区 | 国产成人高清精品免费观看 | 全彩成人18h漫画 | 关晓彤一级做a爰片性色毛片 | 亚洲欧美国产在线 | 白发在线视频播放观看免费 | 亚洲成在人线视频 | 91视频夜色| 楚乔传第二部免费观看全集完整版 | 高h文道具 | 俄罗斯海滩厕所偷窥 | 小伙无套内射老女人 | 人禽l交视频在线播放 视频 | 2020国产精品视频免费 | 欧美成a人片免费看久久 | 手机看片一区二区 | 日韩在线视频二区 | 亚洲熟区| 五月天网站 | 亚洲视频一区在线播放 | 操美女骚b | 国产99er66在线视频 | 黑人巨大初黑人解禁作品 | ipx-177绝对领域在线观看 | 欧美xxxxx九色视频免费观看 | 99手机在线视频 | 美女扒开腿让男人桶爽免费gif | 手机跑分排行最新排名 | 国内精品久久久久小说网 | 日本黄色网页 | 91成人爽a毛片一区二区 | 日本春菜花在线中文字幕 | 手机在线免费观看高清 | 亚洲国产在线播放在线 | 国产成人影院 | 果冻传媒天美传媒乌鸦传媒 |