• 技术文章 >后端开发 >php教程

    php Try Catch异常测试_PHP教程

    2016-07-21 15:48:15原创559
    页面try catch里使用c的 c1,c1里使用b的b1,b1里使用a的a1。

    默认的是:a1里抛出异常,b1里捕获a1的异常,然后再把刚才的异常抛出,c1捕获,然后抛出,最后页面捕获并输出。
    结果是:
    X-Powered-By: PHP/5.1.1
    Content-type: text/html

    #0 D:\workspace\myzCollection\test.php(16): a->a1()
    #1 D:\workspace\myzCollection\test.php(28): b->b1()
    #2 D:\workspace\myzCollection\test.php(37): c->c1()
    #3 C:\Program Files\Zend\ZendStudio-5.2.0\bin\php5\dummy.php(1): include('D:\workspace\my...')
    #4 {main}end

    第二个测试:
    把b1里面的throw $e去掉,就是不抛出。
    结果是:
    X-Powered-By: PHP/5.1.1
    Content-type: text/html

    end

    第三个测试:
    把b1里面的throw new Exception($e->getMessage());打开。
    抛出一个新的异常,这样b1以上的调用都拿不到a1的异常了。
    结果是:
    X-Powered-By: PHP/5.1.1
    Content-type: text/html

    #0 D:\workspace\myzCollection\test.php(28): b->b1()
    #1 D:\workspace\myzCollection\test.php(37): c->c1()
    #2 C:\Program Files\Zend\ZendStudio-5.2.0\bin\php5\dummy.php(1): include('D:\workspace\my...')
    #3 {main}end

    第四个测试:
    把b1里面的try catch throw都去掉。
    结果:一切正常,就是说中间的步骤不需要抛出,最上层也能拿到最下层抛出的异常。
    只是有一个问题,b中如果出先异常,就没有办法取到,如果需要也检测b的话,那么也要在b中加上try catch
    X-Powered-By: PHP/5.1.1
    Content-type: text/html

    #0 D:\workspace\myzCollection\test.php(16): a->a1()
    #1 D:\workspace\myzCollection\test.php(28): b->b1()
    #2 D:\workspace\myzCollection\test.php(37): c->c1()
    #3 C:\Program Files\Zend\ZendStudio-5.2.0\bin\php5\dummy.php(1): include('D:\workspace\my...')
    #4 {main}end

    class a {
    public function a1 () {
    try {
    throw new Exception('123');
    } catch (Exception $e) {
    throw $e;
    }
    }
    }

    class b {
    public function b1 () {
    try {
    $a = new a();
    $a->a1();
    } catch (Exception $e) {
    throw $e;
    //throw new Exception($e->getMessage());
    }
    }
    }

    class c {
    public function c1 () {
    try {
    $a = new b();
    $a->b1();
    } catch (Exception $e) {
    throw $e;
    }
    }
    }

    try {
    $c = new c();
    $c->c1();
    } catch (Exception $e) {
    echo $e->getTraceAsString();
    }
    echo 789;

    ?>

    www.bkjia.comtruehttp://www.bkjia.com/PHPjc/319773.htmlTechArticle页面try catch里使用c的 c1,c1里使用b的b1,b1里使用a的a1。 默认的是:a1里抛出异常,b1里捕获a1的异常,然后再把刚才的异常抛出,c1捕获,...

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:php Try Catch 异常 测试 页面 try catch 使用 默认 抛出 异常 捕获 然后
    上一篇:一周让你学会PHP 不错的学习资料_PHP教程 下一篇:PHP 数据库树的遍历方法_PHP教程
    大前端线上培训班

    相关文章推荐

    • PHP数据库学习之怎样使用PDO获取查询结果?• PHP数据库学习之怎样使用PDO执行SQL语句?• PHP数据库学习之怎样使用PDO连接数据库?• PHP中怎样去连接MySQL数据库?• PHP中获取SQL的查询结果的常用函数整理(实例详解)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网