關於try catch finally的執行順序解釋
阿新 • • 發佈:2018-09-21
內部 試用 ttr cep turn exceptio UNC try catch 面試
偶然遇到了被問到finally的執行問題,忽然發現一直用的都是try catch 沒有用過finally的情況,所以目前總結一下。
先拋出結論:
1、try內部正常執行try的內部邏輯,異常則執行catch的內部邏輯結構,但是不管執行的哪個都會執行完try catch的內部邏輯(非return)後執行finally的內部邏輯。
2、如果try catch都有return,按照正常執行,然後執行finally的邏輯,再返回對應的try 或者catch裏執行return。
3、如果try catch finally都有return,執行完finally的邏輯後,會調用finally的return。
<?php class test{ public function testTry(){ $i = 0; try { $i= $i+1; return $i; } catch (Exception $e) { echo "wc"; } finally { $i= $i+2; // print_r($i); return "1111";//當finally有return的時候 返回這個,當註銷後,返回try 或者是 catch的內容。 } } } $b = new test(); echo $b->testTry(); ?>
簡單的測試代碼如上,記錄用作以後面試用。。
關於try catch finally的執行順序解釋