## 自定义错误处理
### 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防御