PHP 异常处理 - 带 finally 块
简介
无论 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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP