使用 finally 处理 PHP 异常
phpserver side programmingprogramming更新于 2025/7/19 4:22:17
简介
无论 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

