## 自定義錯誤處理
### set_error_handler 函數
使用該函數可以用自己定義的方式來處理運行中的錯誤。 例如:在應用程序中嚴重錯誤發生時,或者在特定條件下觸發了一個錯誤。
mixed set_error_handler ( callable $error_handler [, int $error_types = E_ALL | E_STRICT ] )
| 參數 | 描述 |
| --- | ---- |
| error_handler | 必需,規定發生錯誤時運行的函數。|
|error_types | 可選。規定在哪個錯誤報告級別會顯示用戶定義的錯誤。|
如果使用了該函數,error_types 里指定的錯誤類型都會繞過標準的 PHP 錯誤處理函數,除非回調函數返回了 FALSE。
如果必要,用戶定義的錯誤處理程序必須終止腳本。
以下級別的錯誤不能由用戶定義的函數來處理:
`E_ERROR`,`E_PARSE`,`E_CORE_ERROR`,`E_CORE_WARNING`,`E_COMPILE_ERROR`,`E_COMPILE_WARNING`,
和在調用 set_error_handler() 函數所在文件中產生的大多數 `E_STRICT`。
```
<?php
function my_error($err_no, $err_str, $err_file, $err_line)
{
echo "{$err_no}: {$err_str} in '{$err_file}' on line {$err_line} . PHP_EOL;
exit();
}
set_error_handler('my_error', E_ALL);
foo(); // 調用一個未定義的函數, E_ERROR: 不能被自定義處理
$b = $a + 1; // 使用未定義的變量 E_WARNING: 可以被自定義處理
?>
```
### trigger_error 函數
用于觸發一個用戶級別的錯誤條件,它能結合內置的錯誤處理器所關聯,或者可以使用用戶定義的函數作為新的錯誤處理程序。
bool trigger_error ( string $error_msg [, int $error_type = E_USER_NOTICE ] )
| 參數 | 描述 |
| --- | ---- |
| error_msg | 錯誤信息,長度限制在了 1024 個字節。|
|error_type | 錯誤類型,僅 E_USER 系列常量對其有效,默認是 E_USER_NOTICE。|
```
<?php
function my_error($err_no, $err_str, $err_file, $err_line)
{
echo "{$err_no}: {$err_str} in '{$err_file}' on line {$err_line} . PHP_EOL;
}
set_error_handler('my_error', E_ALL);
function sum($a, $b)
{
if (is_int($a) && is_int($b)) {
return $a + $b;
} else {
trigger_error('param must be integer', E_USER_ERROR);
}
}
sum(123, 'abc');
?>
```
- 基本語法
- PHP標記
- 指令分隔符
- 從HTML中分離
- 注釋
- 數據類型
- 布爾值
- 整數
- 浮點數
- 字符串
- 數組
- 對象
- 資源
- 空值
- 變量
- 基礎
- 預定義變量
- 變量范圍
- 可變變量
- 常量
- 常量語法
- 魔術常量
- 運算符
- 算術運算符
- 賦值運算符
- 位運算符
- 比較運算符
- 遞增與遞減運算符
- 邏輯運算符
- 字符串運算符
- 數組運算符
- 類型運算符
- 流程控制
- if條件結構
- switch條件結構
- while循環結構
- do-while循環結構
- for循環結構
- foreach循環結構
- 包含文件
- 函數
- 自定義函數
- 可變函數
- 匿名函數
- 遞歸函數
- 類與對象
- 基本概念
- 屬性
- 方法
- 類常量
- 構造函數和析構函數
- 訪問控制
- 繼承
- 抽象類
- 接口
- Trait
- 重載
- 對象遍歷
- 魔術方法
- Final關鍵字
- 命名空間
- 自動加載
- 錯誤處理
- 錯誤顯示
- 錯誤日志
- 錯誤報告
- 自定義錯誤處理
- 異常處理
- 異常處理機制
- 擴展異常處理類
- 字符操作
- 數組操作
- 時間操作
- 表單操作
- GET提交
- POST提交
- 文件上傳
- 會話控制
- COOKIE操作
- SESSION操作
- 文件操作
- 文件屬性
- 讀取文件
- 寫入文件
- 文件管理
- 文件鎖
- 目錄處理
- 路徑處理
- 網絡操作
- HTTP協議
- Socket操作
- CURL操作
- PDO操作
- 介紹
- 連接管理
- 預處理語句
- 事務處理
- 錯誤處理
- 圖像操作
- 正則表達式
- 標準推薦
- 包管理器
- 設計模式
- 常用算法
- 安全防御
- XSS防御
- CSRF防御