第24章 PHP 错误处理与异常处理
一、PHP 错误类型
1. 语法错误:代码写错,直接无法运行
2. 运行时错误:代码语法没问题,执行时报错(调用不存在函数、数组下标不存在)
3. 逻辑错误:代码能运行,但结果不对
4. Notice 通知:轻微提示,不影响程序执行
5. Warning 警告:报错但程序继续往下执行
6. Fatal Error 致命错误:程序直接终止运行
二、关闭/开启错误显示
- 代码内设置
php
// 关闭页面错误提示
error_reporting(0);
// 显示所有错误
error_reporting(E_ALL);
- php.ini 配置
display_errors = On 开启
display_errors = Off 关闭
三、自定义错误处理函数
set_error_handler() 自定义接管错误
php
function myError($errNo,$errMsg,$file,$line){
echo "错误号:{$errNo}";
echo "错误信息:{$errMsg}";
echo "文件:{$file} 第{$line}行";
}
set_error_handler('myError');
// 触发错误
echo $a;
四、异常处理核心语法
关键字: try catch throw
- try:放可能出错的代码
- throw:手动抛出异常
- catch:捕获异常并处理
基础语法示例:
php
try{
$age = -5;
if($age < 0){
throw new Exception('年龄不能为负数');
}
}catch(Exception $e){
echo '异常提示:'.$e->getMessage();
}
五、常用异常对象方法
- $e->getMessage() 获取异常信息
- $e->getFile() 获取错误文件
- $e->getLine() 获取错误行号
- $e->getCode() 获取错误码
六、finally 代码块
无论是否异常,一定会执行
php
try{
echo '执行业务逻辑';
}catch(Exception $e){
echo '捕获异常';
}finally{
echo '关闭数据库、释放资源';
}
七、自定义异常类
继承系统 Exception 类,做业务专属异常
php
class UserException extends Exception{
public function showMsg(){
return '用户错误:'.$this->getMessage();
}
}
try{
throw new UserException('账号不存在');
}catch(UserException $e){
echo $e->showMsg();
}
八、本章核心总结
1. PHP 分通知、警告、致命错误三种级别
2. error_reporting 控制错误显示级别
3. set_error_handler 自定义错误接管
4. 异常固定结构:try-throw-catch-finally
5. 开发中用异常处理业务错误,比判断if更规范
6. finally 适合做资源关闭、日志记录收尾操作

请登录后发表评论
注册
停留在世界边缘,与之惜别