当前位置:首页 > CN2资讯 > 正文内容

PHP系列(七)PHP错误异常处理

9小时前CN2资讯

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>";

微信扫一扫 、关注公众号

   不定时分享资料视频


    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/26306.html

    分享给朋友:

    “PHP系列(七)PHP错误异常处理” 的相关文章

    LeaseWeb旧金山数据中心:为企业提供高效IT基础设施解决方案

    在谈到全球范围内的IT基础设施解决方案时,LeaseWeb无疑是一个重要的名字。成立于荷兰的LeaseWeb,凭借其卓越的服务和强大的网络能力,已经发展成为一家全球性的科技公司。它不仅提供传统的独立服务器服务,还涵盖了云计算、服务器托管等多样化的解决方案。对我而言,LeaseWeb就像是一座桥梁,连...

    深入探讨4C与1C:市场营销与电池性能优化的关键

    4C与1C概述 在探讨市场和技术发展的过程中,4C与1C是两个值得注意的概念。虽然它们的名称很相似,但是一个关注的是市场营销的策略,另一个则关乎电池的充放电性能。我常常思考这两个概念的融合点,以及它们对我们生活的深远影响。 1.1 4C理论介绍 4C理论是市场营销中一个重要的框架,帮助企业更好地理解...

    如何使用DigitalOcean优惠码获取200美元免费额度

    DigitalOcean是一家备受赞誉的云计算服务提供商,专门致力于为开发者和初创公司提供一流的云基础设施解决方案。通过其简单易用的界面和高效的性能,DigitalOcean帮助用户轻松地部署和扩展应用程序。我在使用DigitalOcean时,深刻感受到了它为开发者量身定制的便捷性,毫无疑问,这使得...

    如何选择便宜的VPS:最佳性能与价格平衡的指南

    在谈论VPS之前,首先要弄清楚它究竟是什么。VPS,或称虚拟专用服务器(Virtual Private Server),是将一台物理服务器划分成多个虚拟服务器的技术。每个虚拟服务器都可以独立运行自己的操作系统,并且能够进行重新启动,这意味着你获得了一种与专用服务器相似的体验,但成本却比全功能的专用服...

    Fiberstate: 让你的健康饮食更简单轻松

    每当提起“Fiberstate”这个词,我的脑海中便浮现出一个全新的健康理念。Fiberstate并不仅仅是一个产品,它代表着对身体健康全面理解的汇聚,是我提升生活质量的伴侣。从简单的定义开始探讨,这个概念到底蕴含着什么深意。 Fiberstate的定义实际上很贴近我们的日常生活。简单来说,它是指通...

    Linode vs Vultr:选择最佳云服务提供商的指南

    Linode与Vultr概述 在这个云计算的时代,Linode和Vultr是两家备受瞩目的云服务提供商。作为一个用户,我常常在这两者之间进行比较,寻找最适合的解决方案。Linode成立于2003年,专注于为开发者提供虚拟私人服务器(VPS)。它的服务以简单和高效著称,非常适合中小型企业和开发者使用。...