php之错误 Error

1.错误分类

  1. 语法错误,程序运行前都会检查语法正确性,如果错误,将不执行。比如少写了分号 “;”。
  2. 运行时错误,语法检查通过后,开始运行程序过程中产生的错误,比如:警告性错误 提示性错误 致命错误。
  3. 代码逻辑上的错误。程序可以正常运行,但计算结果却错了。

2. 错误的等级

php语言中定义了一些常量来代表一定的错误。
系统常见错误:
E_ERROR: 致命错误
E_WARNING: 警告性错误
E_NOTICE: 提示性错误
用户可自定义的错误:
E_USER_ERROR: 自定义致命错误
E_USER_WARNING: 自定义警告性错误
E_USER_NOTICE: 自定义提示性错误
其他:
E_STRICT: 严谨性语法检查错误
E_ALL 代表“所有错误”。
这里写图片描述

3.错误的触发

3.1 系统触发

程序在运行过程中,存在某种问题,系统会报告错误:

$abc;
echo $abc;//使用一个未定义的变量--E_NOTICE 提示性的错误,后续代码会继续执行

include "aabb.php";//载入一个不存在的文件 E_WARNING 警告性性的错误,后续代码会继续执行

require "aabb.php";//载入一个不存在的文件 E_WARNING ,这个有点特殊,一旦发生不再执行后面的代码
//这里这句代码没机会执行了
no_fun();//使用未定义方法-- E_ERROR,致命的错误,后续代码不再执行

这里写图片描述

3.2 自定义触发错误

开发中因为具体某种业务场景的需求,会要求数据满足一定的条件,而数据不满足此条件时,我们会主动去触发错误,表示数据不合法。

$age  = 16;

if($age<18)
{

 trigger_error('未成年人禁止访问',E_USER_WARNING);
}

这里写图片描述

4.错误显示

4.1 是否显示错误

有两种方式:
1. php.ini文件中 display_errors = On / Off //打开或关闭错误显示
2. ini_set(“display_errors”,”0”);//0为不显示错误报告,1显示错误报告

4.2 控制显示错误的等级

有两种方式:
1. php.ini文件配置 error_reporting
2. 代码设置

// error_reporting 设置错误报告的显示等级
ini_set('error_reporting',E_ERROR); //只显示致命性错误
ini_set('error_reporting',E_WARNING);//显示警告性错误
ini_set('error_reporting',E_NOTICE);//显示提示性错误

//显示指定的三个等级的错误报告
ini_set('error_reporting',E_ERROR | E_WARNING | E_NOTICE);

//PS:在PHP 5.3(包含)之前显示所有的错误报告应该如下写
ini_set('error_reporting',E_ALL | E_STRICT);

//5.3之后一个E_ALL搞定
ini_set('error_reporting',E_ALL );

5.错误日志

5.1 是否打开错误日志记录

php.ini中:
log_errors = On 或 Off
代码中:
ini_set(“log_erros”, “1”); //“1”打开,“0”关闭

5.2 错误日志记录文件位置

//指定错误日志文件

//指定写错误日志的文件
ini_set("error_log","../my_error_log.txt");
//syslog --会写到系统的日志
ini_set("error_log","syslog");

这里写图片描述

6.自定义错误处理

告诉系统错误你别处理了,由开发者指定的代码去处理错误。
两个步骤:
1. 定义一个错误处理函数;
2. 调用错误自定义的错误处理函数。

/**
 自定义函数错误处理
 $errCode -错误代码
 $errMsg  -错误消息
 $errFile -错误文件
 $errLine -错误发生行号
*/
function custom_error_handler($errCode,$errMsg,$errFile,$errLine)
{

   $errStr = "";
   $errStr.= "错误码:".$errCode."<br>";
   $errStr.= "错误消息:".$errMsg."<br>";
   $errStr.= "错误文件:".$errFile."<br>";
   $errStr.= "错误发生行号:".$errLine."<br>";
   $errStr.= "时间:".date("Y-m-d H:i:s")."<br>";
   echo   $errStr;
}
// 调用错误自定义的错误处理函数
set_error_handler("custom_error_handler");

$a;
echo $a;//使用未定义的变量

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值