Lệnh finally
Khối finally được sử dụng cùng với các cấu trúc try và catch để xử lý ngoại lệ. Mã bên trong finally sẽ luôn được thực thi - dù khối try thực hiện thành công hay có ngoại lệ xảy ra.
Cú pháp
try {
// Mã có thể gây ra ngoại lệ
} catch (Exception $e) {
// Xử lý ngoại lệ
} finally {
// Mã sẽ luôn được thực thi
}
Ví dụ
Ví dụ với việc thực thi mã thành công:
<?php
try {
$res = 10 / 2;
echo "Result: " . $res . "\n";
} catch (Exception $e) {
echo "Exception: " . $e->getMessage() . "\n";
} finally {
echo "This will always execute\n";
}
?>
Kết quả thực thi mã:
Result: 5
This will always execute
Ví dụ
Ví dụ với việc xử lý ngoại lệ:
<?php
try {
$res = 10 / 0;
echo "Result: " . $res . "\n";
} catch (Exception $e) {
echo "Exception: " . $e->getMessage() . "\n";
} finally {
echo "This will always execute\n";
}
?>
Kết quả thực thi mã:
Exception: Division by zero
This will always execute
Ví dụ
Sử dụng finally để giải phóng tài nguyên:
<?php
$file = fopen("example.txt", "r");
try {
// Làm việc với file
if ($file) {
echo "File opened successfully\n";
}
} catch (Exception $e) {
echo "Exception: " . $e->getMessage() . "\n";
} finally {
if ($file) {
fclose($file);
echo "File closed in finally block\n";
}
}
?>
Kết quả thực thi mã:
File opened successfully
File closed in finally block