加入收藏 | 设为首页 | 会员中心 | 我要投稿 成都站长网 (https://www.028zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php错误处理和异常处理,PHP的错误处理和异常处理

发布时间:2022-12-03 12:03:03 所属栏目:PHP教程 来源:网络
导读: 由于教程是围绕着文件打开做的错误处理,所以先记录几个用于文件处理的一些函数,fopen 用于打开一个文件;file_exists 用于检查目录是否存在;fclose( $变量 )用于指定关闭打开的文件;
P

由于教程是围绕着文件打开做的错误处理,所以先记录几个用于文件处理的一些函数,fopen 用于打开一个文件;file_exists 用于检查目录是否存在;fclose( $变量 )用于指定关闭打开的文件;

PHP处理错误的几种方式:die()语句;自定义错误和错误触发器;错误日志;

die()语句:

eg :file_exists ( “文件路径/文件名” ) or die( "文件不存在" );

自定义错误处理器(函数)

基本语法:首先定义一个错误函数,然后改写set_error_handler处理器;

error_function( error_level , error_massage, error_file , error_line , error_context);

//这里的error_level , error_massage 是必要的,后面的三个参数是可选的;

set_error_handler( “ 错误函数名 ” , 错误等级);

15559c110917e09496d038d4dd73dfc8.png

// eg:fuction my_error( $errno , $errmes ){//定义错误函数

echo $errno . “错误信息是:” . $errmes ;

}

set_error_handler( "my_error" , E_USER_WARNING );

//这里改写了user_warning的错误处理器,如需要定义其他级别错误需要分别定义错误等级;一般自定义错误处理器都是定义user级别的错误;

$age=200;

if( $age > 120 ){

//调用错误处理器;

trigger_error( " 输入年龄过大 " , E_USER_WARNING); //trigger_error函数默认是NOTICE级别,如有需要必须自定义错误级别;

}

PHP错误日志保存

基本语法:error_log( 错误信息 ,destination_type , " 错误日志保存位置及文件名 " );

date_default_timezone_set( “ Asia/ChongQing ” );//这里定义一个时区PHP错误处理,后面的错误信息插入时间方便日后阅读错误日志;也可在php.ini中更改默认设置date.timezone选项;

// eg:fuction my_error( $errno , $errmes ){//定义错误函数

$error_info =$errno . “错误信息是:” . $errmes ;

error_log( " 时间是 " . date( " Y - m - d G - i - s " ) $error_info ." rn " , 3 , "XXX.txt" ); // rn是txt文件里的换行符,destination_type这里大多数情况下使用3追加记录日志模式;

}

PHP中的异常处理

基本语法:

try{

可能出现的错误的代码;

}catch( Excepion $e ){

1.自己处理;2.自己不处理,抛出;

}

throw new Excepion( “异常信息提示” ); // throw用于抛出异常;

当捕获到一个异常以后,try()块里的代码将不再继续执行;

catch( Excepion $e ){

//这里可以使用函数调用错误信息,行号,异常代码等等,详细参数如下图所示;

echo $e -> getMessage() ;

}

4fc48e38fb955c6824322274c6af9d86.png

当异常继续被抛出,而又没有catch接受异常,PHP会调用默认的顶级异常处理器,顶级异常处理器也可以自定义;

function my_exception( $e ){//自定义顶级异常处理器函数

echo 错误信息 . $e -> getMessage(); //也可以使用上图其他函数;

}

set_exception_handler( " 顶级异常处理器函数名 " ) ; //修改默认顶级处理器(函数)

08327e73ff1967c75c141449a0157ba1.png

(编辑:成都站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!