源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

php Try Catch异常测试

  • 时间:2020-08-10 07:07 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:php Try Catch异常测试
页面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的话,那么也要在b中加上try catch [/b]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  
<?php
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;

?>
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部