PHP學習筆記15——錯誤與異常

 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

相關文章
相關標籤/搜索