推荐答案
在 PHP 中,try-catch-finally 语句用于处理异常。try 块中包含可能抛出异常的代码,catch 块用于捕获并处理异常,而 finally 块中的代码无论是否发生异常都会执行。
// www.javascriptcn.com code example
try {
// 可能抛出异常的代码
$result = 10 / 0;
} catch (DivisionByZeroError $e) {
// 捕获并处理异常
echo "Caught exception: " . $e->getMessage();
} finally {
// 无论是否发生异常,都会执行的代码
echo "This will always be executed.";
}本题详细解读
try 块
try 块用于包裹可能抛出异常的代码。如果在 try 块中的代码抛出了异常,程序会立即跳转到相应的 catch 块。
catch 块
catch 块用于捕获并处理 try 块中抛出的异常。每个 catch 块可以捕获特定类型的异常。你可以有多个 catch 块来处理不同类型的异常。
// www.javascriptcn.com code example
try {
// 可能抛出异常的代码
$result = 10 / 0;
} catch (DivisionByZeroError $e) {
// 捕获并处理 DivisionByZeroError 异常
echo "Caught DivisionByZeroError: " . $e->getMessage();
} catch (Exception $e) {
// 捕获并处理其他类型的异常
echo "Caught Exception: " . $e->getMessage();
}finally 块
finally 块中的代码无论 try 块中是否抛出异常,都会执行。通常用于释放资源或执行清理操作。
// www.javascriptcn.com code example
try {
// 可能抛出异常的代码
$file = fopen("nonexistentfile.txt", "r");
} catch (Exception $e) {
// 捕获并处理异常
echo "Caught exception: " . $e->getMessage();
} finally {
// 无论是否发生异常,都会执行的代码
if (isset($file)) {
fclose($file);
}
echo "This will always be executed.";
}注意事项
finally块中的代码会在try或catch块中的return语句之前执行。- 如果
finally块中有return语句,它会覆盖try或catch块中的return语句。
// www.javascriptcn.com code example
function test() {
try {
return "try";
} finally {
return "finally";
}
}
echo test(); // 输出 "finally"