久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放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之錯誤處理詳解

      PHP之錯誤處理詳解

      PHP之錯誤處理詳解

      錯誤報告

        PHP程序的錯誤發(fā)生一般歸屬于下列三個領(lǐng)域:

        1、語法錯誤

        語法錯誤最常見,并且也容易修復(fù)。如:代碼中遺漏一個分號。這類錯誤會阻止腳本的執(zhí)行

        2、運行時錯誤

        這種錯誤一般不會阻止PHP腳本的執(zhí)行,但會阻止當(dāng)前要做的事情。輸出一條錯誤,但php腳本繼續(xù)執(zhí)行

        3、邏輯錯誤

        這種錯誤最麻煩,既不阻止腳本執(zhí)行,也不輸出錯誤消息

        [注意]若將php.ini配置文件中的display_errors從默認(rèn)的on設(shè)置為off,將不顯示任何錯誤

        在PHP腳本中可調(diào)用ini_set()函數(shù),動態(tài)設(shè)置php.ini配置文件

      ini_set("display_errors","On"); //顯示所有錯誤信息

      PHP之錯誤處理詳解

      錯誤級別

      PHP之錯誤處理詳解

        實際上,表格中的13個錯誤類型可以分為3類:注意級別、警告級別和錯誤級別。一般地,在開發(fā)過程中,忽略注意級別的錯誤

      <?php  getType($a);//未定義變量,注意級別  echo "1111111111111111<br>";    getType();//未傳入?yún)?shù),警告級別  echo "222222222222222222222<br>";  getType3();//函數(shù)名錯誤,錯誤級別  echo "333333333333333333333<br>";  ?>

      PHP之錯誤處理詳解

      錯誤處理

      1、第一種錯誤處理方法是修改配置文件

        錯誤級別默認(rèn)為提示所有級別的錯誤:error_reporting = E_ALL

        把error_reporting = E_ALL改為error_reporting = E_ALL & ~E_NOTICE 表示不提示注意級別的錯誤。然后,重啟服務(wù)生效

      error_reporting = E_ALL & ~E_NOTICE 拋出任何非注意的錯誤,默認(rèn)值error_reporting = E_ERROR | E_PARSE | E_CORE_ERROR 只考慮致命的運行時錯誤、新解析錯誤和核心錯誤error_reporting = E_ALL & ~(E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE) 報告除用戶導(dǎo)致的錯誤之外的所有錯誤

      PHP之錯誤處理詳解

      2、第二種錯誤處理方法是使用錯誤處理函數(shù)

        在PHP腳本可以通過error_reporting( )函數(shù)動態(tài)設(shè)置錯誤報告級別

      <?php     error_reporting(E_ALL & ~E_NOTICE);     getType($a);//注意級別     echo "1111111111111111<br>";     getType();//警告級別     echo "222222222222222222222<br>";     getType3();//錯誤級別     echo "333333333333333333333<br>";?>

      PHP之錯誤處理詳解

      自定義錯誤處理

        自定義錯誤報告的處理方式,可以完全繞過標(biāo)準(zhǔn)的PHP錯誤處理函數(shù),這樣就可以按自己定義的格式打印錯誤報告,或改變錯誤報告打印的位置,以下幾種情況可以考慮自定義錯誤處理:1、記下錯誤的信息,及時發(fā)現(xiàn)一些生產(chǎn)環(huán)境出現(xiàn)的問題;2、屏蔽錯誤;3、控制錯誤的輸出; 4、作為調(diào)試工具

        使用set_error_handler()函數(shù)來設(shè)置用戶自定義錯誤處理

      <?php     //error_reporting(E_ALL & ~E_NOTICE);     //在php中注冊一個函數(shù)來處理錯誤報告,替代默認(rèn)的方式     set_error_handler("myerrorfun");         $mess = "";    //自定義錯誤報告處理函數(shù)     function myerrorfun($error_type, $error_message, $error_file, $error_line) {         global $mess;                 $mess.="發(fā)生錯誤級別為{$error_type}類型, 錯誤消息<b>{$error_message}</b>, 在文件<font >{$error_file}</font>中, 第{$error_line}行。<br>";         }    getType($a);         echo "1111111111111111<br>";         getType();         echo "222222222222222222222<br>";         echo "--------------------------------------------<br>";         echo $mess;     ?>

      錯誤日志

        一般地,程序都會保存錯誤日志,用來記錄程序運行時的錯誤信息。且錯誤日志都有其默認(rèn)的存儲位置。對于錯誤信息和錯誤日志的位置,我們都可以進(jìn)行修改

        在PHP.ini配置文件中,有以下幾項可以對錯誤日志進(jìn)行設(shè)置

      error_reporting = E_ALL //將向PHP發(fā)送每個錯誤display_errors=Off //不顯示錯誤報告log_errors=On //決定日志語句記錄的位置log_errors_max_log=1024 //每個日志項的最大長度error_log=G:/myerror.log //指定錯誤寫進(jìn)的文件

        在php文件中,我們可以使用函數(shù)error_log()來自定義錯誤信息

      <?phperror_log("登錄失敗了!");?>

      PHP之錯誤處理詳解

      異常處理

        異常(Exception)處理用于在指定的錯誤發(fā)生時改變腳本的正常流程,是PHP5中的一個新的重要特性。異常處理是一種可擴(kuò)展、易維護(hù)的錯誤處理機制,并提供了一種新的面向?qū)ο蟮腻e誤處理方式

      try{
      使用try去包含可能會發(fā)生異常的代碼
      一旦出現(xiàn)異常try進(jìn)行捕獲異常,交給catch處理。
      拋出異常語句:throw 異常對象。
      }catch(異常對象參數(shù)){
      在這里做異常處理。
      }[catch(。,,){
      .. .. ..
      }]

      <?php     try {        $error = 'Always throw this error';        throw new Exception($error);            //創(chuàng)建一個異常對象,通過throw語句拋出         echo 'Never executed';                  //從這里開始,try代碼塊內(nèi)的代碼將不會再被執(zhí)行     } catch (Exception $e) {        echo ‘Caught exception: ’.$e->getMessage()." "; //輸出捕獲的異常消息     }    echo 'Hello World'; //程序沒有崩潰繼續(xù)向下執(zhí)行?>

      自定義異常

        用戶可以用自定義的異常處理類來擴(kuò)展PHP內(nèi)置的異常處理類。以下的代碼說明了在內(nèi)置的異常處理類中,哪些屬性和方法在子類中是可訪問和可繼承的

      <?phpclass Exception{     protected $message = 'Unknown exception';   // 異常信息     private   $string;                          // __toString cache     protected $code = 0;                        // 用戶自定義異常代碼     protected $file;                            // 發(fā)生異常的文件名     protected $line;                            // 發(fā)生異常的代碼行號     private   $trace;                           // backtrace     private   $previous;                        // previous exception if nested exception     public function __construct($message = null, $code = 0, Exception $previous = null);     final private function __clone();           // Inhibits cloning of exceptions.     final public  function getMessage();        // 返回異常信息     final public  function getCode();           // 返回異常代碼     final public  function getFile();           // 返回發(fā)生異常的文件名     final public  function getLine();           // 返回發(fā)生異常的代碼行號     final public  function getTrace();          // backtrace() 數(shù)組     final public  function getPrevious();       // 之前的 exception     final public  function getTraceAsString();  // 已格成化成字符串的 getTrace() 信息     // Overrideable     public function __toString();               // 可輸出的字符串}?>

        [注意]如果使用自定義的類來擴(kuò)展內(nèi)置異常處理類,并且要重新定義構(gòu)造函數(shù)的話,建議同時調(diào)用parent::__construct()來檢查所有的變量是否已被賦值。當(dāng)對象要輸出字符串的時候,可以重載__toString() 并自定義輸出的樣式

      <?php     /* 自定義的一個異常處理類,但必須是擴(kuò)展內(nèi)異常處理類的子類 */     class MyException extends Exception{         //重定義構(gòu)造器使第一個參數(shù) message 變?yōu)楸仨毐恢付ǖ膶傩?        public function __construct($message, $code=0){             //可以在這里定義一些自己的代碼          //建議同時調(diào)用 parent::construct()來檢查所有的變量是否已被賦值             parent::__construct($message, $code);         }             public function __toString() {                   //重寫父類方法,自定義字符串輸出的樣式           return __CLASS__.":[".$this->code."]:".$this->message."<br>";         }        public function customFunction() {                  //為這個異常自定義一個處理方法              echo "按自定義的方法處理出現(xiàn)的這個類型的異常<br>";         }     }?>
      <?php    try { //使用自定義的異常類捕獲一個異常,并處理異常         $error = '允許拋出這個錯誤';                throw new MyException($error);                  //創(chuàng)建一個自定義的異常類對象,通過throw語句拋出         echo 'Never executed';              //從這里開始,try代碼塊內(nèi)的代碼將不會再被執(zhí)行     } catch (MyException $e) {        //捕獲自定義的異常對象         echo '捕獲異常: '.$e;        //輸出捕獲的異常消息         $e->customFunction();  //通過自定義的異常對象中的方法處理異常     }    echo '你好呀';              //程序沒有崩潰繼續(xù)向下執(zhí)行?>

      相關(guān)參考:php教程

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