PHP 5 预定义错误和日志常量
打开一个不存在的文件
<?php /** * Coded by MuT6 Sch01aR * Date: 2018/3/12 22:30 */ $fp = fopen(‘test.txt‘,‘r‘); echo ‘ok‘; ?>
运行结果
报了一个文件不存在的警告,后面的ok成功打印
使用die()方法处理错误
执行完die()方法后程序会退出
<?php /** * Coded by MuT6 Sch01aR * Date: 2018/3/12 22:30 */ //使用die()方法处理 if (!file_exists(‘test.txt‘)){ //判断文件是否存在 die(‘不存在文件!‘); } //die()方法的另一个更简便的写法 file_exists(‘test.txt‘) or die(‘不存在文件!!!‘) ?>
运行结果
自定义错误处理函数
自己定义错误处理的函数来处理程序的错误
<?php /** * Author: MuT6 Sch01aR * Date: 2018/3/13 * Time: 12:12 */ //定义一个错误处理函数 function my_error($errno, $errmsg){ // $errno为错误号,$errmsg为错误信息 echo ‘错误号:‘.$errno."\n"; echo ‘错误信息:‘.$errmsg; } //改写set_error_handler处理器,调用错误处理函数my_error处理级别为E_WARNING的错误 set_error_handler(‘my_error‘, E_WARNING); $fp = fopen(‘test.txt‘,‘r‘); //打开一个不存在的文件 ?>
运行结果
错误触发器
错误触发器可以处理一些特定的错误
<?php /** * Author: MuT6 Sch01aR * Date: 2018/3/13 * Time: 12:41 */ $age = 121; if ($age > 120){ //调用系统的触发器 trigger_error(‘年龄过大‘,E_USER_WARNING); exit(); } ?>
运行结果
系统触发器处理了特定的错误
也可以自己定义错误触发器
<?php /** * Author: MuT6 Sch01aR * Date: 2018/3/13 * Time: 12:41 */ //定义一个错误触发器 function my_error($errno, $errmsg){ echo ‘错误号:‘.$errno."\n"; echo ‘错误信息:‘.$errmsg; } set_error_handler(‘my_error‘, E_USER_WARNING); $age = 121; if ($age > 120){ //调用系统的触发器 trigger_error(‘年龄过大‘,E_USER_WARNING); exit(); } ?>
运行结果
错误日志
错误日志用来记录程序运行时的错误
<?php /** * Author: MuT6 Sch01aR * Date: 2018/3/13 * Time: 12:02 */ function my_error($errno, $errmsg){ echo ‘错误号:‘.$errno.‘----‘.‘错误信息:‘.$errmsg; $error_msg = ‘错误号:‘.$errno.‘----‘.‘错误信息:‘.$errmsg; date_default_timezone_set("Asia/Chongqing"); $error_time = date(‘Y-m-d G:i:s‘); error_log(‘[‘.$error_time.‘]‘.$error_msg."\n",3,"log.txt"); } set_error_handler(‘my_error‘); function Guess_Age($age){ if($age> 120){ trigger_error(‘年龄过大‘); //触发错误 } } Guess_Age(123); ?>
运行结果
生成了一个记录错误的日志文件