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

