PHP finally 和 return 之间的交互

phpserver side programmingprogramming更新于 2025/8/20 1:07:17

简介

当 try 块或 catch 块(或两者)包含 return 语句时,finally 块会出现一种特殊行为。通常,return 语句会导致程序控制权返回到调用位置。但是,如果函数包含带有 return 的 try/catch 块,则 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

相关文章