<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                在PHP中或其他任何語言中,異常和錯誤的概念都是不一樣的。 PHP中遇到非正常代碼,通常都會觸發錯誤,而不是拋出異常。 ``` <?php /** * User: 三千 * Date: 16/4/13 * Time: 上午11:31 */ $a = null; try{ $a = 5 / 1; echo $a,PHP_EOL; }catch(exception $e){ $e->getMessage(); $a = -1; } echo $a; ``` 結果: ``` changzuxindeMacBook-Pro% php 1.6.1_1.php Warning: Division by zero in /Users/changzuxin/www/code/php_core/1.6.1_1.php on line 10 ``` 可以看到,對于除0這種異常情況,PHP認為這是一個錯誤,直接觸發錯誤,而不會自動拋出異常使程序進入異常流程,所以如果想使用異常處理不可預料的問題,是辦不到的。 PHP中只有你主動throw后,才能捕捉異常。 比如說: ``` <?php /** * User: 三千 * Date: 16/4/13 * Time: 上午11:12 */ class emailException extends Exception{ } class pwdException extends Exception{ function __toString(){ return "Exception{$this->getCode}:{$this->getMessage()} \n in File:{$this->getFile()} on line :{$this->getLine()}"; } } function reg($reginfo = null){ if(empty($reginfo) || !isset($reginfo)){ throw new Exception("參數非法"); } if(empty($reginfo['email'])){ throw new emailException("郵件為空"); } if($reginfo['pwd'] != $reginfo['repwd']){ throw new pwdException("兩次密碼不一致"); } echo "注冊成功"; } ``` 上面的代碼判斷傳入的參數,根據業務進行異常分發。如果沒有傳入任何參數,就把異常分發給exception超類,跳出注冊流程,如果email地址不存在,那么把異常分發給自定義的emailException異常,跳出注冊流程;如果兩次密碼不一致,則將異常分發給自定義的pwdException異常,跳出注冊流程。 異常分發完之后,在對異常進行分揀并做處理。 ``` try{ reg(array('email'=>'','pwd'=>123,'repwd'=>456)); }catch(emailException $e){ echo $e->getMessage(); }catch(pwdException $e){ echo $e; echo PHP_EOL,'特殊處理'; }catch(Exception $e){ echo $e->getTraceAsString(); echo PHP_EOL,'其他情況,統一處理'; } ``` 結果 ``` changzuxindeMacBook-Pro% php 1.6.1_2.php 郵件為空% ``` 注意,exception作為超類應該放在最后捕獲。不然捕獲這個異常超類后,后面的捕獲就終止了,而這個超類不能提供針對性的信息和處理。 在這里,對表單進行異常處理,通過重寫異常類、手動拋出錯誤的方式進行異常處理。這是一種業務異常,可以認為地把所有不符合要求的情況都試作業務異常,和通常意義上的代碼異常相區別。 在PHP中異常該怎么用?在什么時候拋出異常,什么時候捕獲?什么場景下能應用異常?在下面三種場景下會用到異常處理機制。 - 對程序的悲觀預測 - 程序的需要和對業務的關注 - 語言級別的健壯性要求 1.對程序的悲觀預測 是指程序員認為他的代碼無法一一處理各種可預見、不可預見的情況,那該程序員就會進行異常處理。假設一個場景,程序員悲觀地認為自己的這段代碼在高并發條件下產生死鎖,那么他就會悲觀地拋出異常,然后在死鎖時進行捕獲,對異常進行細致的處理。 2.程序的需要和對業務的關注 如果程序員希望業務代碼中不會充斥
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看