|
頁(yè)面try catch里使用c的 c1,c1里使用b的b1,b1里使用a的a1。
默認(rèn)的是:a1里拋出異常,b1里捕獲a1的異常,然后再把剛才的異常拋出,c1捕獲,然后拋出,最后頁(yè)面捕獲并輸出。
結(jié)果是:
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
第二個(gè)測(cè)試:
把b1里面的throw $e去掉,就是不拋出。
結(jié)果是:
X-Powered-By: php/5.1.1
Content-type: text/html
end
第三個(gè)測(cè)試:
把b1里面的throw new Exception($e->getMessage());打開(kāi)。
拋出一個(gè)新的異常,這樣b1以上的調(diào)用都拿不到a1的異常了。
結(jié)果是:
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
第四個(gè)測(cè)試:
把b1里面的try catch throw都去掉。
結(jié)果:一切正常,就是說(shuō)中間的步驟不需要拋出,最上層也能拿到最下層拋出的異常。
只是有一個(gè)問(wèn)題,b中如果出先異常,就沒(méi)有辦法取到,如果需要也檢測(cè)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
<?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;
?>
php技術(shù):php Try Catch異常測(cè)試,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。