博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP系列(七)PHP错误异常处理
阅读量:7250 次
发布时间:2019-06-29

本文共 2639 字,大约阅读时间需要 8 分钟。

1、Php错误报告级别

1 E_ERROR 致命的运行错误。错误无法恢复,暂停执行脚本。

2 E_WARNING 运行时警告(非致命性错误)。非致命的运行错误,脚本执行不会停止。

4 E_PARSE 编译时解析错误。解析错误只由分析器产生。

8 E_NOTICE 运行时提醒(这些经常是你代码中的bug引起的,也可能是有意的行为造成的。)

 error_reporting = E_ALL & ~E_NOTICE

2、自定义php错误报告方式

set_error_handler("myerrorfun");

$mess ="";

function  myerrorfun($error_type,$error_message,$error_file,$error_line){

            global $mess;

            $mess.="发生错误级别为{$error_type}类型、错误消息<b>{$error_message}</b>,在文件夹{$error_file},第{$error_line}行。<br>";

}

getType($a);

echo"$mess";

显示为:发生错误级别为8类型、错误消息Undefined variable: a,在文件夹C:\AppServ\www\index.php,第9行。

 set_error_handler($_type,$_message,$_errfile,$_errline) 函数设置用户自定义的错误处理程序,然后触发错误

3、php记录错误日志

log_errors = on 开启php日志

error_log =syslog  将php日志写到系统上去。

error_log = “c:/lamp/php_error.log”;自已指定一个存放目录、与上面相斥

ini_set(“log_errors”,“on”); 在php开发文件里设置

 

try{

            echo"开始";

            run();

}catch(Exception $e){

            echo$e->getMessage()."<br>";

}

//当try{}里面不成功就抛出catch里面的异常

4、自定义异常类

//自定义异常类、必须是系统类Exception的子类

//如果继承Exception类、重写了构造方法、一定要调一下父类中被覆盖的方法/

class  MyBtException extends  Exception{

            function__construct($mess){

                       parent::__construct($mess);

            }

            functionchangBt(){

                       echo"换个备胎";

            }

}

try{

            throw  new  MyBtException("车子胞胎");

            echo"路况很好!";

}catch(MyBtException $e){

            Echo  $e->getMessage()."<br>";

            $e->changBt()."<br>";

}

5、自定义多个异常类

            //写出对应这个异常解决方法, 就是一下正常类的结构

            class MyBtException  extends  Exception{

                       function__construct($mess) {

                                   parent::__construct($mess);

                       }

                       functionchangBt() {

                                   echo"换上备胎!";

                       }

            }

            class  WcException  extends  Exception {

                       functionpro() {

                                   echo"去公厕<br>";

                       }

            }

            class  NoException  extends  Exception {

                       functionpro() {

                                   echo"买面色凑合一下!<br>";

                       }

            }

            Class  FlException  extends  Exception {

                       functionpro() {

                                   echo"走小路!<br>";

                       }

            }

class  Dm  {

            function gowc($bj) {

                       if(!$bj){

                                   throw new WcException("马桶不好用了");

                       }

                       echo"哈哈,事儿办的很成功!<br>";

            }

 

            function eat($time) {

                       if(!$time){

                                   thrownew NoException("起来晚了,早餐没了!");

                       }

                       echo"吃的很好!<br>";

            }

            function dri($dz) {

                       if(!$dz){

                                   throw new  MyBtException("爆胎了");

                       }

                       echo"车开的不错!<br>";

            }

            function run($yu) {

                       if(!$yu){

                                   throw new  FlException("天下雪了, 高速封路了");

                       }

                       echo"高速很好走!<br>";

            }

}

echo "早上起床<br>";

try{

            $dm =new  Dm();

            // 1. 上厕所  (马桶不好用了),去公厕

            $dm-> gowc(true);

            // 2. 吃早餐 (没有早点),买面包

            $dm-> eat(true);

            //3. 开车上班 (爆tai)         换下

            $dm->dri(true);

 

            //4. 上高速  (下雪)  小路

            $dm->run(false);

} catch(MyBtException  $e) {   //  Exception $e = newException('');

            echo$e->getMessage()."<br>";

            //自定义类中的解决方法调用,解决了问题

            $e->changBt()."<br>";

            try {

            }catch(Exception$e) {

            }

} catch(NoException $e) {

            echo$e->getMessage()."<br>";

            $e->pro();

} catch(WcException $e) {

            echo$e->getMessage()."<br>";

            $e->pro();

} catch(Exception $e) {

            echo$e->getMessage()."<br>";

            //$e->pro();

}

            echo"到公司开始工作<br>";

本文转自 sswqzx 51CTO博客,原文链接:http://blog.51cto.com/sswqzx/1968854

转载地址:http://auebm.baihongyu.com/

你可能感兴趣的文章
JVM 调优总结:一些概念
查看>>
HTML5:使用Lawnchair库存储JSON
查看>>
如何设计秒杀系统
查看>>
屏蔽USB设备的几种方法
查看>>
zen cart 特价商品列表页中加入排序选择
查看>>
配置Pycharm4.5.4调试edX Devstack
查看>>
Nginx+Tomcat负载均衡配置
查看>>
symbol AP5131重置密码和恢复出厂设置
查看>>
自定义一个jdbc框架
查看>>
[SHELL]shell scripts笔记(2)
查看>>
redis 客户端工具
查看>>
Apache禁止用IP非法域名访问网站
查看>>
监控服务篇---zabbix安装部署步骤
查看>>
nagios 远程Mysql 监控 PHP图表
查看>>
PingingLab传世经典系列《CCNA完全配置宝典》-3.13 DHCP基本配置
查看>>
新的开始
查看>>
fedora 20 上的hadoop 2.2.0 x64 编译过程
查看>>
找创业伙伴,比找老婆还难【转载】
查看>>
yarn上手体验
查看>>
iOS 图片和音频的防盗链的应用
查看>>