> php教程 > php手册 > php异常TryCatch测试

php异常TryCatch测试

WBOY
풀어 주다: 2016-06-06 19:56:34
원래의
1131명이 탐색했습니다.

http://blog.csdn.net/mayongzhan - 马永占,myz,mayongzhan 首先感谢老曹同学。。。 主要测试了多层级使用异常。 注意蓝色加粗字。 页面try catch里使用c的 c1,c1里使用b的b1,b1里使用a的a1。 默认的是:a1里抛出异常,b1里捕获a1的异常,然后再把刚才的异

http://blog.csdn.net/mayongzhan - 马永占,myz,mayongzhan

 

首先感谢老曹同学。。。
主要测试了多层级使用异常。
注意蓝色加粗字。

 

页面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;

?>

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿