亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

php中異常處理方法小結

2024-05-04 23:30:04
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了php中異常處理方法,以實例形式總結歸納了常見的php異常處理技巧,具有一定參考借鑒價值,需要的朋友可以參考下
 

本文實例總結了php中異常處理方法。分享給大家供大家參考。具體分析如下:

當異常被觸發時,通常會發生:在PHP5中添加了類似于其它語言的錯誤異常處理模塊。在 PHP代碼中所產生的異??杀?throw語句拋出并被 catch 語句捕獲。需要進行異常處理的代碼都必須放入 try 代碼塊內,以便捕獲可能存在的異常。每一個 try 至少要有一個與之對應的 catch。

使用多個 catch 可以捕獲不同的類所產生的異常,當 try 代碼塊不再拋出異?;蛘哒也坏?catch 能匹配所拋出的異常時,PHP 代碼就會在跳轉到最后一個 catch 的后面繼續執行。當然,PHP 允許在 catch 代碼塊內再次拋出(throw)異常,當一個異常被拋出時,其后(譯者注:指拋出異常時所在的代碼塊)的代碼將不會繼續執行,而 PHP 就會嘗試查找第一個能與之匹配的 catch,如果一個異常沒有被捕獲,而且又沒用使用 set_exception_handler() 作相應的處理的話,那么 PHP 將會產生一個嚴重的錯誤,并且輸出 Uncaught Exception ... (未捕獲異常)的提示信息.

1、異常類的層級關系,代碼如下:

復制代碼代碼如下:
class NotFoundException extends Exception{}

 

class InputException extends Exception{}

class DBException extends Exception{}

 

2、配置未捕捉異常的處理器,代碼如下:

復制代碼代碼如下:
function exception_uncaught_handler(Exception $e) {    
header('Content-type:text/html; charset=utf-8');    
if ($e instanceof NotFoundException)    
exit($e->getMessage());    
elseif ($e instanceof DBException)    
exit($e->getMessage());    
else    
exit($e->getMessage());    
}    
set_exception_handler('exception_uncaught_handler');

3、在數據庫連接代碼,手動拋出DBException異常但未使用try…catch進行捕獲處理,該異常將被PHP自定義異常處理器,exception_uncaught_handler()函數處理:
復制代碼代碼如下:
$this->resConn = mysql_connect ($CONFIGS['db_host'], $CONFIGS['db_user'], $CONFIGS['db_pwd']);    
if (false == is_resource($this->resConn))    
throw new DBException('數據庫連接失敗。'.mysql_error($this->resConn));

4、業務邏輯一瞥:
復制代碼代碼如下:
if (0 != strcmp($curAlbum->interest_id, $it))  

 

throw new NotFoundException('很抱歉,你所訪問的相冊不存在');

 

以上就是PHP自定義異常處理器的具體使用方法.

php實例代碼如下:

復制代碼代碼如下:
<?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; 


 
$email = "someone@example.com"; 
 
try 
 { 
 //check if  
 if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) 
  { 
  //throw exception if email is not valid 
  throw new customException($email); 
  } 
 //check for "example" in mail address 
 if(strpos($email, "example") !== FALSE) 
  { 
  throw new Exception("$email is an example e-mail"); 
  }
 } 
 
catch (customException $e) 
 { 
 echo $e->errorMessage(); 
 } 
 
catch(Exception $e) 
 { 
 echo $e->getMessage(); 
 } 
?>

例子解釋:上面的代碼測試了兩種條件,如何任何條件不成立,則拋出一個異常.

 

1.customException() 類是作為舊的 exception 類的一個擴展來創建的,這樣它就繼承了舊類的所有屬性和方法.

2.創建 errorMessage() 函數,如果 e-mail 地址不合法,則該函數返回一個錯誤消息.

3.執行 "try" 代碼塊,在第一個條件下,不會拋出異常.

4.由于 e-mail 含有字符串 "example",第二個條件會觸發異常.

5."catch" 代碼塊會捕獲異常,并顯示恰當的錯誤消息.

如果沒有捕獲 customException,緊緊捕獲了 base exception,則在那里處理異常,重新拋出異常,有時,當異常被拋出時,您也許希望以不同于標準的方式對它進行處理,可以在一個 "catch" 代碼塊中再次拋出異常,代碼如下:

總結:PHP異常的使用方法分三步:

第一步:定義異常類,如果不定義就用系統默認的異常類;

第二步:當出現異常時用 throw 拋出異常,例如 ex1($num2);異常的參數是$num2用該異常的getMessage()獲取;

第三步:觸發異常,用try子句,當滿足條件時  throw new ex1($num);

第四步:catch捕獲異常 catch (ex2 $e),相當于實例化一個定義好的異常類ex2為$e;

注意,異常可以定義多個,但是只能觸發一個,也就是說只能用catch捕獲一個異常.

基本異常類,創建可拋出一個異常的函數:

復制代碼代碼如下:
function num($num){ 
 if ($num>1){//異常拋出條件 
  $msg="數值不能大于1″;//異常提示信息 
  throw new Exception($msg);//拋出異常 
 } 
 echo "數值小于1″; 

//在 "try" 代碼塊中觸發異常 
try { 
 num(3); 
 echo "執行正常"; 

//捕獲異常 
catch (Exception $e){ 
 echo "錯誤信息:".$e->getMessage();//Exception()的系統方法獲取異常信息 
 echo "錯誤文件:".$e->getFile();//Exception()的系統方法獲取異常文件名 
 echo "行數:".$e->getLine();//Exception()的系統方法獲取異常行數 

//====================================================================== 
echo "<br>========================================================<br>"; 
//擴展基本異常類 
function checkEmail($email){//定義一個可以拋出異常的判斷EMAIL合法性的函數 
 if (filter_var($email,FILTER_VALIDATE_EMAIL)==false){ 
  throw new checkEmailException($email);//拋出異常用EMAIL做參數 
 } 
 echo "郵件合法"; 

class checkEmailException extends Exception{//定義擴展異常類 
 public function errormsg(){ 
  $msg="錯誤原因:".$this->getMessage()."不是一個合法的EMAIL地址!"; 
  $msg.="錯誤文件名:".$this->getFile(); 
  $msg.="錯誤行數:".$this->getLine(); 
  echo $msg; 
 } 

$email="email…..@chhua.com"; 
try {//觸發異常 
 checkEmail($email); 

//捕獲異常 
catch (checkEmailException $e){ 
 $e->errormsg(); 

//==================================多個異常的捕獲 
echo "<br>===================================================<br>"; 
class ex1 extends Exception{//定義一個異常類 
 public function msg(){ 
  $msg="錯誤原因:".$this->getMessage()."大于100<br>"; 
  $msg.="錯誤文件:".$this->getFile()."<Br>"; 
  $msg.="錯誤代碼:".$this->getCode()."<br>"; 
  $msg.="行數:".$this->getLine()."<br>"; 
  echo $msg; 
 } 

class ex2 extends Exception{//定義一個異常類 
        public function msg(){ 
  $msg="錯誤原因:".$this->getMessage()."等于100<br>"; 
  $msg.="錯誤文件:".$this->getFile()."<Br>"; 
  $msg.="行數:".$this->getLine()."<br>"; 
  echo $msg; 
 } 

$num2=100; 
try { 
 if ($num2>100){//當條件滿足時觸發 
  throw new ex1($num2); 
 } 
 if ($num2==100){//當條件滿足時觸發 
  throw new ex2($num2); 
 }

catch (ex2 $e){//捕獲觸發的異常 
 $e->msg(); 

catch (ex1 $e){//捕獲觸發的異常 
 $e->msg(); 
}

 

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产视频精品免费播放| 亚洲最大的成人网| 国产欧美日韩免费看aⅴ视频| 久久九九亚洲综合| 欧美怡春院一区二区三区| 国产精品久久av| y97精品国产97久久久久久| 日韩欧美精品免费在线| 亚洲国产精品久久久久久| 久久精品视频一| 欧美日韩在线观看视频| 丁香五六月婷婷久久激情| 中文字幕日韩视频| 91成人福利在线| 国产91精品黑色丝袜高跟鞋| 国产丝袜一区二区三区免费视频| 亚洲国产精品99久久| 久久精品人人爽| 日韩av免费在线观看| 久久精品国产欧美激情| 国产精品亚洲аv天堂网| 日韩经典第一页| 亚洲欧美制服另类日韩| 国语自产在线不卡| 久久综合电影一区| 97免费视频在线| 欧美日韩成人免费| 久久久中精品2020中文| 亚洲欧美中文日韩v在线观看| 川上优av一区二区线观看| 亚洲欧美综合精品久久成人| 欧美性开放视频| 自拍偷拍亚洲在线| 久久精品影视伊人网| 亚洲精品视频在线观看视频| 亚洲人成网站色ww在线| 亚洲精品狠狠操| 国产福利精品av综合导导航| 一本一本久久a久久精品牛牛影视| 国产精品网站大全| 久久精品国亚洲| 国产成人黄色av| 97超碰色婷婷| 精品欧美一区二区三区| 国产精品欧美日韩| 欧美劲爆第一页| 中文字幕亚洲色图| 国产精品久久久999| 亚洲国产精久久久久久| 亚洲色图狂野欧美| 欧美精品电影免费在线观看| 久久久久久91香蕉国产| 亚洲天堂男人天堂| 欧美激情乱人伦一区| 久久99国产精品自在自在app| 奇米一区二区三区四区久久| 国产精品成人av在线| 久久国产精品久久国产精品| 亚洲精品视频免费在线观看| 欧美视频裸体精品| 亚洲一区久久久| 成人www视频在线观看| www.日韩系列| 亚洲精品日产aⅴ| 国产丝袜精品第一页| 国产精品xxxxx| 欧美二区乱c黑人| 精品国产成人av| 精品视频www| 国产亚洲精品综合一区91| 欧美性xxxxxxx| 韩国欧美亚洲国产| 日本高清不卡的在线| 国产成人在线亚洲欧美| 欧美日韩综合视频| 国产热re99久久6国产精品| 久久精品夜夜夜夜夜久久| 日韩经典一区二区三区| 久久福利视频网| 欧美日韩亚洲一区二| 欧美日韩免费观看中文| 亚洲精品一区二三区不卡| 精品亚洲男同gayvideo网站| 日本久久久久久久久| 欧洲成人免费视频| 91九色单男在线观看| 亚洲欧洲一区二区三区在线观看| 国产精品久久久久久久久久久新郎| 国产成人精品免费久久久久| 国产精品自拍偷拍| 精品亚洲永久免费精品| 欧美性猛交xxxx免费看久久久| 91在线观看免费观看| 日韩av影片在线观看| 国内自拍欧美激情| 亚洲综合最新在线| 热99精品里视频精品| 国产亚洲精品va在线观看| 欧美激情综合色综合啪啪五月| 亚洲国产精彩中文乱码av| 欧美日韩在线视频一区二区| 91久久精品美女| 欧美国产日产韩国视频| 国产999精品久久久| 国产精品伦子伦免费视频| 奇米成人av国产一区二区三区| 国产精品丝袜久久久久久高清| 亚洲免费电影在线观看| 91国产精品91| 国产激情视频一区| 8x海外华人永久免费日韩内陆视频| 欧美性一区二区三区| 国产精品69av| 国产成人小视频在线观看| 日韩中文字幕网址| 国产精品户外野外| 亚洲福利视频久久| 日韩av最新在线| 国产精品久久久久久一区二区| 亚洲国产成人精品久久久国产成人一区| 国产伊人精品在线| 热re91久久精品国99热蜜臀| 欧美激情精品久久久久久| 欧美一级高清免费| 亚洲第一二三四五区| 最新国产精品拍自在线播放| 中文国产成人精品| 亚洲91精品在线观看| 国产精品扒开腿做爽爽爽视频| 在线观看欧美日韩国产| 欧美日韩国产中字| 国内精品免费午夜毛片| 欧美精品精品精品精品免费| 欧美在线观看网站| 日韩经典一区二区三区| 国产精品夜间视频香蕉| 欧美日韩中文字幕日韩欧美| 国产激情视频一区| 精品中文字幕在线观看| 亚洲国产小视频| 91精品国产成人| 欧美日韩国产91| 国产精品盗摄久久久| 日韩电影免费观看在线观看| 青草成人免费视频| 久久福利网址导航| 亚洲91精品在线观看| 久久综合88中文色鬼| 影音先锋欧美精品| 亚洲第一天堂av| 色偷偷噜噜噜亚洲男人的天堂| 5252色成人免费视频| 一区二区亚洲欧洲国产日韩| 国产美女主播一区| 尤物tv国产一区| 久久久国产一区| 丁香五六月婷婷久久激情| 奇米成人av国产一区二区三区| 97视频在线观看播放| 精品福利一区二区| 国产美女久久久| 成人h片在线播放免费网站| 91系列在线观看| 国产精品久久久久久久久久久久久久|