php错误码判断处理,php错误处理和异常

本文详细介绍了PHP中的错误处理机制,包括基础错误处理、自定义错误处理器、触发错误和错误报告级别。同时,也讲解了异常的概念,如何创建自定义异常处理器,处理多个异常,以及如何重新抛出异常和设置顶层异常处理器。通过实例代码,帮助读者深入理解PHP的错误处理和异常处理机制。
摘要由CSDN通过智能技术生成

一.基础的错误处理

含义:一条消息会被发送到浏览器,这条消息带有文件名,行号以及一条描述错误的消息。

基本的错误处理: if(!file_exists('welcome.txt')) {

die('file not found');

} else {

$file=fopen('welcome.txt', 'r');

}

如果没有上述的判断,会直接报错,产生warning.

二.创建自定义错误处理器

创建一个专用函数,可以在php中发生错误时调用该函数,该函数必须有能力处理至少两个参数(error level和error message),但是最多可以接受5个参数(可选:文件,行号,内容-一个数组,包含了当错误发生时在用的每个变量以及它们的值)

set_error_handler('函数名'):遇到错误会触发,比如文件不存在,变量未定义等,以及自定义触发的错误(下面叙述)

function customError($error, $errstr) {

echo "Error:[$errno]$errstr";

}

set_error_handler('customError');

echo($test)

//上述代码会输出

Error:[8]Undefined variable:test

三.触发错误

trigger_error(errormsg,errortype):函数创建用户级别的错误消息

参数:errormsg:规定错误消息

errortype:规定错误类型。E_USER_ERROR,E_USER_WARNING,E_USER_NOTICE(默认

$test = 2;

if ($test>1) {

trigger_error('Value must be 1 or below');

}

//以上代码会输出

Notice:Value must be 1 or below in C:\webfolder\test.php on line 6

)

四.错误报告级别

常量

描述

E_WARNING

非致命的run_time错误,不暂停脚本执行

E_NOTICE

run_time通知,脚本发现可能有错误发生,但也可能在脚本正常运行时发生

E_USER_ERROR

致命的用户生成的错误,这类似于trigger_error()设置的E_ERROR

E_USER_WARNING

非致命的用户生成的警告,这类似于trigger_error()设置的E_WARNING

E_USER_NOTICE

用户生成的通知,这类似于trigger_error()设置的E_NOTICE

E_RECOVERABLE_ERROR

可捕获的致命错误,类似E_ERROR,但可被用户定义的处理程序捕获

E_ALL

所有错误和警告,除级别E_STRICT以外

五.异常

含义:异常处理用于在指定的错误情况发生时改变脚本的正常流程,这种情况成为异常

异常触发时,会发生的情况:当前代码状态被保存。代码执行被切换到预定义的异常处理器函数。根据情况,处理器也许会从保存的代码状态重新开始执行代码,终止脚本执行,或从代码中另外的位置继续执行脚本。

处理方法:异常的基本使用。创建自定义的异常处理器。多个异常。重新抛出异常。设置顶层异常处理器。

六.异常的基本处理

function checkNum($number) {

if ($number>1) {

throw new Exception('Value must be 1 or below');

}

return true;

}

try {

checkNum(2);

}catch(Exception $e){

echo 'Message:'.$e->getMessage();

}

//上述代码会获得这样一个错误

Message:Value must be 1 or below;

七:创建一个自定义的Exception类

该类必须是exception类的一个扩展,该类继承了exception类的所有属性,您可向其添加自定义的函数

class customException extends Exception{

public function errorTwo() {

//定义错误处理

}

}

//继承了Exception的属性和方法

八:多个异常

try {

if($num>100) {

throw new Exception1($num);

}

if ($num==100) {

throw new Exception2($num);

}

}

catch(Exception1 $e) {

echo $e->getMessage();

}

catch(Exception2 $e) {

echo $e->getMessage();

}

九:重新抛出异常

如果在当前try中异常没有被捕获,则它将在更高层级上查找catch代码

try{

try{

if ($num == 100) {

throw new Exception($num);

}

}catch(Exception $e) {

throw new Exception1($num);

}

} catch(Exception1 $e) {

echo $e->errorMessage();

}

十:设置顶层异常处理器

set_exception_handler()函数可设置处理所有未捕获异常的用户定义函数

function myException($exception) {

echo "Exception:",$exception->getMessage();

}

set_exception_handler('myException');

throw new Exception('Uncaught Exception occurred');

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值