<?php
class a catch (exception $e) }}
class b catch (exception $e) }}
class c catch (exception $e) }}
try catch (exception $e)
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 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 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 end
php Try Catch多層級異常測試
class a catch exception e class b catch exception e class c catch exception e try catch exception e echo end 頁面try catch裡使用c的 c1,c1裡使用b的b1,b1裡使用a的a1。預...
linux動態庫多層級呼叫
這是乙個小知識點,今天拿出來說說。我們有乙個應用test,它呼叫了乙個動態庫so1.so,而這個so1.so又呼叫了so2.so。so1.so的編譯命令列gcc o so2.so lso1 lrt lstdc test的編譯命令列gcc o test lso1 lrt lstdc 會報錯,說是在so...
多層級tree狀資料優化
1.先獲取第一級選單 2.準備遞迴的出口 3.遞迴呼叫 4.將獲取的子選單設定給父選單 param pid 一級選單 pid 0 return public list getallchildren long pid 遞迴函式 param pid return public list treedata...