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
广告