Heim  >  Artikel  >  php教程  >  php异常TryCatch测试

php异常TryCatch测试

WBOY
WBOYOriginal
2016-06-06 19:56:341100Durchsuche

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;

?>

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP手册 2009国庆版Nächster Artikel:php文件上传表单的代码