PHP 異常處理 - 帶 finally 塊


簡介

無論 try 程式碼塊是否出現異常,finally 程式碼塊中的程式碼始終都會執行。此程式碼塊要麼出現在 catch 程式碼塊之後,要麼代替 catch 程式碼塊。

catch 和 finally 程式碼塊

在以下示例中,同時提供了 catch 和 finally 程式碼塊。如果在 try 程式碼塊中發生異常,則執行這兩個程式碼塊中的程式碼。如果沒有異常,則僅執行 finally 程式碼塊。

示例

 即時演示

<?php
function div($x, $y) {
   if (!$y) {
      throw new Exception('Division by zero.');
   }
   return $x/$y;
}
try {
   echo div(10,0) . "
"; } catch (Exception $e) {    echo 'Caught exception: ', $e->getMessage(), "
"; } finally{    echo "This block is always executed
"; } // Continue execution echo "Execution continues
"; ?>

輸出

顯示以下輸出

Caught exception: Division by zero.
This block is always executed
Execution continues

更改 try 程式碼塊中的語句,使其不發生異常

示例

 即時演示

<?php
function div($x, $y) {
   if (!$y) {
      throw new Exception('Division by zero.');
   }
   return $x/$y;
}
try {
   echo div(10,5) . "
"; } catch (Exception $e) {    echo 'Caught exception: ', $e->getMessage(), "
"; } finally{    echo "This block is always executed
"; } // Continue execution echo "Execution continues
"; ?>

輸出

顯示以下輸出

2
This block is always executed
Execution continues

僅 finally 程式碼塊

以下示例有兩個 try 程式碼塊。其中一個僅有 finally 程式碼塊。它的 try 程式碼塊呼叫引發異常的 div 函式

示例

 即時演示

<?php
function div($x, $y){
   try{
      if (!$y) {
         throw new Exception('Division by zero.');
      }
      return $x/$y;
   }
   catch (Exception $e) {
      echo 'Caught exception: ', $e->getMessage(), "
";    } } try {    echo div(10,0) . "
"; } finally{    echo "This block is always executed
"; } // Continue execution echo "Execution continues
"; ?>

輸出

顯示以下輸出

Caught exception: Division by zero.

This block is always executed
Execution continues

更新日期: 2020-09-18

403 次瀏覽

開啟你的 職業生涯

完成課程以獲得認證

開始
廣告