1 <?php 2 //1. 開啓錯誤報告 3 /* 配置文件中display_errors和error_reporting用於配置錯誤報告級別 4 * 首先要設置display_errors爲On,也能夠在腳本中ini_set('display_errors', 1) 5 * 以後設置錯誤報告級別error_reporting(E_ERROR),參數是錯誤的報告級別 6 */ 7 8 //2. 自定義錯誤 9 /* trigger_error(str,E_ERROR) 能夠代替die,自定義一個錯誤 10 * set_error_handle(error_handle) 設置處理錯誤的回調函數 11 */ 12 error_reporting(0); //關閉錯誤警告 13 set_error_handler('error_handle'); //設置處理錯誤的函數 14 echo $aaaa; //notice,未定義變量 15 echo 3/0; //warning,除0 16 trigger_error("a error", E_USER_ERROR); //error,自定義錯誤 17 function error_handle($error_level, $error_message, $file, $line) { 18 $EXIT = false; 19 switch($error_level) { 20 case E_NOTICE: 21 case E_USER_NOTICE: 22 $error_type = 'NOTICE'; 23 break; 24 case E_WARNING: 25 case E_USER_WARNING: 26 $error_type = 'WARNING'; 27 break; 28 case E_ERROR: 29 case E_USER_ERROR: 30 $error_type = 'FATAL ERROR';break; 31 $EXIT = true; 32 break; 33 default: 34 $error_type = 'UNKNOWN'; 35 $EXIT = true; 36 break; 37 } 38 printf("<font color='#FF0000'><b>%s</b></font>: %s in <b>%s</b> on line <b>%d</b><br>\n", 39 $error_type, $error_message, $file, $line); 40 41 if ($EXIT){ 42 //跳轉到錯誤窗口 43 //echo '<script>location="err.html";</script>' 44 } 45 } 46 47 //3. 寫錯誤日誌 48 /* 使用指定文件記錄錯誤報告日誌,應做以下配置 49 * error_reporting = E_ALL 50 * display_errors = Off 51 * log_errors = On 52 * log_errors_max_len = 1024 ;每一個日誌項最大長度 53 * error_log = /usr/local/error.log ;位置 54 * 能夠使用error_log來送出用戶自定義的信息 error_log(message,[type,des,extra_headers]) 55 * error("aa",0) //寫入到操做系統日誌中 56 * error("aa",1,aa@aa.com) //寫入到管理員郵箱中 57 * error("aa",2,"localhost:5050") //發送到5050端口的服務器中 58 * error("aa",3,/usr/a.log) //發送到指定文件中 59 */ 60 61 //4. 異常處理 62 /* try{..}catch{..} 63 * 和java中代碼結構同樣,但在php中必需要手動拋出異常 64 * 能夠繼承Exception類實現本身的異常類 65 */ 66 try { 67 echo "Before throw<br>"; 68 throw new Exception("throw me"); 69 echo "After throw<br>"; 70 } catch (Exception $e) { 71 echo "Caught Exception: {$e->getMessage()} <br>"; 72 } 73 74 ?>
執行結果php