第24章 PHP 错误处理与异常处理

一、PHP 错误类型

1. 语法错误:代码写错,直接无法运行
2. 运行时错误:代码语法没问题,执行时报错(调用不存在函数、数组下标不存在)
3. 逻辑错误:代码能运行,但结果不对
4.  Notice 通知:轻微提示,不影响程序执行
5.  Warning 警告:报错但程序继续往下执行
6.  Fatal Error 致命错误:程序直接终止运行

二、关闭/开启错误显示

  1. 代码内设置

php

// 关闭页面错误提示
error_reporting(0);
// 显示所有错误
error_reporting(E_ALL);
 

  1. 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 适合做资源关闭、日志记录收尾操作
【瓜分奖池】PHP基础第二十四章 第5张插图