PHP 中 finally 和 return 的互動


導言

當 try 塊或 catch 塊(或兩者)包含一個 return 語句時,finally 塊會呈現出一種特殊的行為。通常,return 語句會使程式控制權返回到呼叫位置。但是,對於帶有 try/catch 塊且帶 return 的函式,finally 塊中的語句會在返回前先執行。

示例

在以下示例中,div() 函式有一個 try - catch - finally 結構。沒有異常的 try 塊會返回除法運算結果。在異常情況下,catch 塊會返回錯誤訊息。但是,在這兩種情況下,finally 塊中的語句都會先執行。

示例

 線上演示

<?php
function div($x, $y){
   try {
      if ($y==0)
         throw new Exception("Division by 0");
      else
         $res=$x/$y;;
         return $res;
      }
      catch (Exception $e){
         return $e->getMessage();
      }
      finally{
         echo "This block is always executed
";    } } $x=10; $y=0; echo div($x,$y); ?>

輸出

會顯示以下輸出

This block is always executed
Division by 0

將 $y 的值變為 5。 會顯示以下輸出

This block is always executed
2

更新於: 18-Sep-2020

1K+ 瀏覽

開啟你的 職業生涯

完成課程即可獲得認證。

開始學習
廣告
© . All rights reserved.