PHP中的錯誤處理和日誌函數

debug_backtrace — 返回一個供調試使用的信息樹
debug_print_backtrace — 打印一個供調試使用的信息樹
error_get_last — 捕獲最後的一條錯誤信息
error_log — 將php的錯誤信息發送到某處
error_reporting — 設定php的錯誤顯示情況
restore_error_handler — 恢復set_error_handler()函數對錯誤處理方式的修改
restore_exception_handler — 恢復set_exception_handler()函數對異常處理方式的修改
set_error_handler — 指定一個自定義的函數來處理錯誤信息
set_exception_handler — 指定一個自定義的函數來處理異常信息
trigger_error — 拋出一條用戶級的錯誤信息。
user_error — trigger_error()函數的別名
php

php中的錯誤有如下幾種類型:
E_ERROR:php運行中的致命錯誤,會終止程序的運行。
E_WARNING:php運行中的非致命錯誤,不會終止程序的運行。
E_NOTICE:php運行中的重要建議,最好有所改進的地方。
E_STRICT:php運行中的細節建議,每每是爲了更好的向後兼容。
E_PARSE:編譯過程當中解析器彙報的錯誤,好比你忘記了語句後面的「;」。
E_CORE_ERROR:php核心產生的致命錯誤。
E_CORE_WARNING:php核心產生的非致命錯誤。
E_COMPILE_ERROR:Zend引擎引發的編譯致命錯誤。
E_COMPILE_WARNING:Zend引擎引發的編譯非致命錯誤。
E_USER_ERROR:使用trigger_error()函數拋出的致命錯誤,會終止程序的運行。
E_USER_WARNING:使用trigger_error()函數拋出的非致命錯誤,不會終止程序的運行。
E_USER_NOTICE:使用trigger_error()函數拋出的並不嚴重的錯誤。
E_RECOVERABLE_ERROR:Catchable fatal error. It indicates that a probably dangerous error occured, but did not leave the Engine in an unstable state. If the error is not caught by a user defined handle (see also set_error_handler()), the application aborts as it was an E_ERROR.
E_ALL:在PHP 5.2以前表示除了E_STRICT以外的全部錯誤。6之後表示全部錯誤。
web

error_reporting()函數的做用是設定錯誤的顯示方式,惟一的一個參數必須是一個數字,「0」表示不顯示任何錯誤。 服務器

0 不顯示任何錯誤信息
1 E_ERROR
2 E_WARNING
4 E_PARSE
8 E_NOTICE
16 E_CORE_ERROR
32 E_CORE_WARNING
64 E_COMPILE_ERROR
128 E_COMPILE_WARNING
256 E_USER_ERROR
512 E_USER_WARNING
1024 E_USER_NOTICE
6143 E_ALL
2048 E_STRICT
4096 E_RECOVERABLE_ERROR
<?php
error_reporting(0);
// 不顯示任何錯誤信息
error_reporting(E_ALL ^ E_NOTICE);
// E_ALL 的二進制爲:1011111111111,E_NOTICE 的二進制爲:1000,二者進行按位異或操做,獲得:1011111110111 表示在E_ALL級別中排除E_NOTICE的錯誤信息,並顯示。
?>

error_get_last()函數的做用是捕獲最後一條錯誤信息。 app

<?php
echo 3/0;
print_r(error_get_last());
/**
* Array
* (
* [type] => 2
* [message] => Division by zero
* [file] => D:\work\web\php\test.php
* [line] => 2
* )
*/


echo $a;
print_r(error_get_last());
/**
* Array
* (
* [type] => 8
* [message] => Undefined variable: a
* [file] => D:\work\web\php\test.php
* [line] => 14
* )
*/

?>

trigger_error()函數的做用是拋出一條用戶級的錯誤信息。 trigger_error()函數有兩個參數,第一個參數表示拋出的信息 內容,第二個參數是E_USER_ERROR,E_USER_WARNING,E_USER_NOTICE 之一,表示錯誤信息的級別。 函數

<?php
trigger_error("這裏顯示一個錯誤", E_USER_WARNING);
// 顯示 「Warning: 這裏顯示一個錯誤 in D:\work\web\php\test.php on line 2」
?>

debug_backtrace()函數的做用是返回一個供調試使用的信息樹。debug_print_backtrace()函數的做用是直接打印輸出信息,而不是返回。 spa

<?php
function test($arg)
{
  
print_r(debug_backtrace());
}
test(6);
/**
* Array
* (
* [0] => Array
* (
* [file] => D:\work\web\php\test.php
* [line] => 7
* [function] => test
* [args] => Array
* (
* [0] => 6
* )
*
* )
*
* )
*
*/

?>

error_log()函數的做用是將php的錯誤信息發送到某 處,error_log()函數有四個參數,第一個參數表示錯誤的信息,第二個參數 表示發送錯誤的方式:0表示本地系統的php的錯誤日誌,1表示發送到某個郵箱地址,2表示發送到遠程的服務器(僅在php3中有效),3表示追加到任意 的一個本地文件。 debug

<?php
error_log("錯誤信息", 3, "./test.txt");
// 在當前目錄生成一個test.txt文件,並存放錯誤信息
?>

set_error_handler()函數的做用是設定一個回調函數來處理錯誤信 息。set_error_handler()函數有兩個參數,第 一個參數是回調函數的名稱,第二個參數表示錯誤的級別。restore_error_handler()函數的做用是恢復先前 set_error_handler()函數定義前的錯誤處理方式。set_exception_handler()函數的做用是設定一個處理異常的函 數,一種自定義的異常處理方式。restore_exception_handler()函數的做用是恢復 set_exception_handler()函數對異常處理方式的修改。 調試

set_error_handler()函數指定的函數須要處理五個參數:分別表示:錯誤級別,錯誤信息,錯誤的文件,錯誤的行數,錯誤處的變量信息,其中最後一個參數是可選的。
set_exception_handler()函數指定的函數須要一個參數:包含錯誤信息的對象。
rest

相關文章
相關標籤/搜索