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