<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### 概述 程序運行與預期不太一致,與錯誤是兩個不同的概念 . ### 語法 每一個try都需要對應一個catch或者多個catch代碼塊 ,用來捕獲不同類產生的異常 . 如果try代碼塊沒有找到異常PHP將會跳過catch代碼塊進行下面的程序運行 . 如果有一個異常被拋出的話,throw里面的代碼就不會被執行了 . ~~~ try{ 需要進行異常處理的代碼段; }catch(Exception $e){ ... }catch(Exception $e){ ... }catch(Exception $e){ ... } ~~~ ### 經典除零案例 ~~~ $num = null; try{ $num = 3 / 0; var_dump($num); } catch(Exception $e){ echo $e->getMessage(); } echo 'continue...'; ~~~ 結果 ~~~ Warning: Division by zero in C:\Users\Artisan\Desktop\project\Test\index.php on line 5 float(INF) continue... ~~~ 程序并沒有跑到catch段中 . 當我們遇到0當除數的時候,這觸發了PHP中本身的一個錯誤,而沒有走到catch段中, 反而產生了一個警告 .**也就是說PHP首先觸發的是錯誤,而不會自動的拋出異常** . 在PHP中必須手動,主動的通過throw拋出異常才可以 . ### 通過throw拋出異常 ~~~ $num1 = 3; $num2 = 0; try{ if($num2 == 0){ throw new Exception("0不能當做除數"); //throw之后的代碼不會被執行 echo "這里不會被執行"; }else{ $result = $num1 / $num2; } } catch(Exception $e){ echo $e->getMessage(); //之后可以通過die()或者return 來停止程序 . } echo 'continue...'; ~~~ ~~~ 0不能當做除數 continue... ~~~ PHP的異常和其他語言不太一樣, 在Java中它認為除0就是異常,它就會捕獲,并進行處理 . PHP的異常機制還不太完善 . ### PHP內置異常類 PHP也內置了一些異常類, 也可以不通過throw的方式去拋出異常 .比PDO異常類 . ~~~ try{ $pdo = new PDO("mysql:host=localhost;dnname=mysql",'root','xxxx');//這里并沒有手動throw }catch(Exception $e){ echo $e->getMessage(); } ~~~ 結果 ~~~ SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) ~~~ ### 錯誤和異常的區別 當遇到錯誤的時候,PHP會主動的觸發錯誤,而不會主動的拋出異常 . 只有他通過throw語句來拋出異常, 然后通過catch來捕獲異常 . 在PHP中錯誤已經很有用了,但是錯誤和異常還是有區別的 . 首先,他們是兩個不同的機制 . 錯誤是沒有辦法在調用的時候向上傳遞的 ,因為錯誤必須馬上進行處理 .而異常會一一向上傳遞,直到我們去捕獲 . 在發生錯誤的時候,我們必須要對我們的錯誤腳本進行處理 ,而異常可以自定義的來處理異常錯誤信息. 如果沒有錯誤消息,我們很難確定程序哪里出現了哪些問題 ,因為我們觸發的任何錯誤都不具有相關的錯誤代碼或者名稱 . 這時候異常的好處就體現出來了,因為異常都是通過代碼來拋出,接著通過代碼向上傳遞,直到我們通過代碼來捕獲異常信息 .
                  <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>

                              哎呀哎呀视频在线观看