php Try Catch多层级异常测试
来源:互联网 发布:sql相加函数 编辑:程序博客网 时间:2024/06/14 03:50
<?phpclass 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 'end';?>
页面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
0 0
- php Try Catch多层级异常测试
- php try() catch() : 捕捉异常,抛出异常
- php 的异常处理try catch
- php异常处理--try,throw,catch
- php的异常处理 try catch
- php try,catch,throw异常处理
- php中try catch捕获异常
- try catch 异常处理
- try catch捕获异常
- JAVA 异常 try-catch
- try-catch异常处理
- 异常try-catch-finally
- 异常机制 try{}catch{}
- c++异常Try catch
- try{}catch{}异常捕获
- try catch 异常处理
- c++异常Try catch
- @try@catch捕获异常
- protell99se中如何复制一个PCB库到另外一个库
- 数据库注入漏洞
- linux kernel 移植步骤
- Android学习资料分享(不断更新中)
- 博弈基础知识
- php Try Catch多层级异常测试
- 深入浅出Java回调机制
- xmpp openfire smack android IM demo
- Java中类的生命周期
- 数据库去除某几个字段相同值的行
- IOS网络检测及使用
- 23种设计模式(3):抽象工厂模式
- 8583协议深入理解 2
- Sending email 记忆线索