【笔记】php中的错误机制try和catch的使用

<?php
错误处理

异常处理:意外 ,是在程序运行的时候意外发生的事情,使用异常改变脚本正常流程
    php5中的一个新的特性
    try{
        
        if()
            throw new Exception("");
    }catch(Exception $e){//$e=Exception创建的对象
    
    }
    //流程
1.如果try中代码没有问题,则将try中的代码执行完后就到catch后执行,不执行里面的代码 2.如果try中代码有异常,则抛出一个异常对象,抛给了catch中的参数,try后就不继续执行,直接跳到catch中执行 注意:一般是提示 但是,为什么不去给他加上去???可以加上去 二、最好自己定义一个异常类Eg2(本文最下) 作用:写一个或者多个方法当发生异常的处理方式 1.自己定义异常类,必须是Exceoption(内置的)的子类//就是必须继承他 2.Exception类中的只有构造和toString()可以重新写,其他都是final 三、处理多个异常Eg3 四、自己定义功能类来处理异常Eg3 收货: 可以用错误处理来处理一些错误如下Eg1中的例子,果然还是catch里面还是可以再写嵌套的 ****Eg1://异常处理的常用处理方式 try{ echo "11<br>"; $file=@fopen("text.txt","r"); if(!$file){ throw new Exception("打开文件失败!"); } echo "222"; }catch(new $e){//$e=Exception创建的对象 //可以输出getMessage,就是刚刚上面定义的文字。 $e->getMessage()."<br>"; //例子 ,如果没有可以创建 touch("hello.txt"); $file=@fopen("hello.txt","r"); echo "333"; } echo "444"; ****Eg2://可以直接的调用这个方法了 class OpenFileException extends Exception{ function __construct($mess=null,$code=0){ parent::__construct($mess,$code); echo "wwwwww<br>"; }//如果父类方法中有构造方法必须再调用一下,,,省的有的东西执行不了~~ function open(){ touch("tmp.txt","w"); $file=fopen("tmp.txt","r"); return $file; } } ... ... throw new OpenFileException(); ... ... $e->open(); $e->getMessage(); ****Eg3://这个方法比较牛逼~ 可以调用多个异常 //不同的方法不同的异常 catch可以多用 //1.首先写 好多好多好多 的类...暂时写两个吧 class DemoException extends Exception{ function pro(){ echo "处理pro的异常"; } } class TestException extends Exception{ function pro(){ echo "处理pro的异常"; } } //2.然后用一个里面用throw new OpenFileException class MyClass{ function demo($num=0){ if (!num==1){ throw new DemoException("demo"); } } function test($num=0){ if (!num==1){ throw new TestException("test"); } } } try{ echo "111"; $my=new MyClass(); $my->demo();//带参数来测试 $my->test(); echo "222"; }catch(DemoException $e){ echo $e->getMessage()."<br>"; $e->pro(); }catch(TestException $e){ echo $e->getMessage()."<br>"; $e->pro(); }//一个一个的对应...但是顺序?
原文地址:https://www.cnblogs.com/xiguayizu/p/3339379.html