久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      五分鐘帶你看懂PHP中的異常處理是什么情況

      在之前的文章中給大家?guī)砹恕兑欢ǜ愕枚甈HP中如何添加圖片水印》,其中通過過示例給大家詳細(xì)介紹了在PHP中應(yīng)該如何添加水印,本篇文章我們繼續(xù)來看一下PHP中錯誤處理的相關(guān)知識,希望能幫助到大家!

      五分鐘帶你看懂PHP中的異常處理是什么情況

      PHP中的錯誤和異常處理在PHP中是非常常用的,在我們的日常開發(fā)中,肯定會遇到比如忘記加分號了、函數(shù)名寫錯或者函數(shù)被重新定義了等等很多的錯誤,如果說在開發(fā)過程中,能夠發(fā)現(xiàn)錯誤顯示錯誤,那肯定對我們的開發(fā)是十分有利的。

      因此,在開發(fā)項(xiàng)目的時候合理使用一場處理,會有助于我們發(fā)現(xiàn)錯誤改正錯誤以加快開發(fā)速度。那接下來我們就一起來看一看應(yīng)該怎樣去了解我們的錯誤處理。大家也可以通過免費(fèi)的《php錯誤處理》教學(xué)視頻來進(jìn)行學(xué)習(xí)。

      PHP中的異常處理類

      在PHP中就提供了內(nèi)置的異常處理類,也就是Exception,這個類包含了一些處理異常的函數(shù),這些函數(shù)可以捕獲程序異常和錯誤。

      那下面列舉出該類中較為常用的函數(shù):

      • getTraceAsString():返回已格式化成字符串的、由函數(shù) getTrace() 函數(shù)所產(chǎn)生的信息

      • __toString():產(chǎn)生異常的字符串信息,它可以重載。注意,該函數(shù)最前部是兩個下劃線

      • getMessage():返回異常的消息內(nèi)容

      • getLine():返回發(fā)生錯誤的代碼行號

      • getCode():以數(shù)字形式返回異常代碼

      • getFile():返回發(fā)生異常的文件名

      • getTrace():返回 backtrace() 數(shù)組

      捕獲程序中的異常

      程序中的異常出現(xiàn)一般不會自己顯現(xiàn)出來,這時候我們可以通過try catch 語句和 throw 關(guān)鍵字,來達(dá)到捕捉程序中異常的目的。

      try catch語句和流程控制的語句類似,throw關(guān)鍵字可以拋出一個異常,我們可以通過類似條件選擇的結(jié)構(gòu)來完成捕獲程序中的異常。try catch語句的語法格式如下:

      try{     // 可能出現(xiàn)異?;蝈e誤的代碼,比如文件操作、數(shù)據(jù)庫操作等 }catch(Exception $a){    // $a 為一個異常類的對象     // 輸出錯誤信息 }

      在我們需要進(jìn)行捕捉程序異常時,需要把需要捕捉的代碼放入try代碼塊里面,在上述語法中,每一個try應(yīng)該至少有一個與之對應(yīng)的catch。當(dāng)try代碼塊沒有catch匹配的異常時,代碼就會跳轉(zhuǎn)到最后一個catch后面繼續(xù)進(jìn)行。

      在其中產(chǎn)生的異常都可以被throw語句跑出來并且被catch捕獲,當(dāng)有一個異常出現(xiàn)的時候,在其后面的代碼就不會再繼續(xù)執(zhí)行了。

      示例如下:

      <?php     try{         $err = '拋出異常信息,并跳出 try 語句塊';         if(is_dir('./demo')){             echo '這里是一些可能會發(fā)生異常的代碼';         }else{             throw new Exception($err, 20211020);   // 拋出異常         }         echo '上面拋出異常的話,這行代碼將不會執(zhí)行,轉(zhuǎn)而執(zhí)行 catch 中的代碼。<br>';     }catch(Exception $e){         echo '捕獲異常:'.$e->getMessage().'<br>錯誤代碼:'.$e->getCode().'<br>';     }     echo '繼續(xù)執(zhí)行 try catch 語句之外的代碼'; ?>

      輸出結(jié)果:

      五分鐘帶你看懂PHP中的異常處理是什么情況

      再上述示例中,通過try語句試圖判斷當(dāng)前目錄下有沒有名為demo的目錄,目錄不存在,所以執(zhí)行了throw關(guān)鍵字拋出異常。異常發(fā)現(xiàn)拋出后,try語句的剩下語句就不會在運(yùn)行了。

      創(chuàng)建自己的異常類

      PHP中可以事先定義一些異常,因?yàn)镻HP中很少會主動的拋出異常,當(dāng)事先定義好異常后,我們可以通過if-else來對可能出現(xiàn)的異常進(jìn)行判斷,手動來拋出異常,再PHP中經(jīng)常能夠使用到我們自己創(chuàng)建的異常類。

      示例如下:

      <?php class emailException extends Exception{     function __toString(){         return "<b>email is null</b>file:".$this->getFile().',line:'. $this->getLine();     } } class nameException extends Exception{ } ?>

      上述示例中,定義了兩個異常類,都繼承自 Exception 基類。

      在實(shí)際的業(yè)務(wù)中,我們也會根據(jù)不同的需求來拋出不同的異常,示例如下:

      function reg($reg) {     if (empty($reg['email'])) {         throw new emailException("emaill is null", 1);     }     if(empty($reg['name'])) {         throw new nameException("name is null", 2);      } }

      在執(zhí)行業(yè)務(wù)代碼時,可以使用if語句來判斷異常會發(fā)生的地方,然后手動拋出異常,通過語句實(shí)現(xiàn)將不同的異常分發(fā)給不同的異常類處理;再下面這段示例中,根據(jù)不同的情況捕獲不同的異常,當(dāng)?shù)谝粋€catch捕獲了異常,即使程序中依然存在其他異常,也會跳過其他的catch代碼塊。無論程序中有沒有出現(xiàn)異常,最后的finally中的語句都會執(zhí)行的。示例如下:

      try{     $reg = array('phone'=>'1888888888');     reg($reg); } catch(emailException $e) {     echo $e; } catch(nameException $e) {     echo 'error msg:' .$e->getMessage().'error code:'.$e->getCode(); } finally {     echo ' finally'; }

      想要了解

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號