คำสั่ง finally
บล็อก finally ใช้ร่วมกับโครงสร้าง try และ catch เพื่อจัดการข้อยกเว้น โค้ดภายใน finally จะทำงานในทุกกรณี ไม่ว่าจะเป็นเมื่อบล็อก try ทำงานสำเร็จหรือเมื่อมีข้อยกเว้นเกิดขึ้น
ไวยากรณ์
try {
// โค้ดที่อาจทำให้เกิดข้อยกเว้น
} catch (Exception $e) {
// การจัดการข้อยกเว้น
} finally {
// โค้ดที่จะทำงานในทุกกรณี
}
ตัวอย่าง
ตัวอย่างเมื่อโค้ดทำงานสำเร็จ:
<?php
try {
$res = 10 / 2;
echo "Result: " . $res . "\n";
} catch (Exception $e) {
echo "Exception: " . $e->getMessage() . "\n";
} finally {
echo "This will always execute\n";
}
?>
ผลลัพธ์การทำงานของโค้ด:
Result: 5
This will always execute
ตัวอย่าง
ตัวอย่างเมื่อมีการจัดการข้อยกเว้น:
<?php
try {
$res = 10 / 0;
echo "Result: " . $res . "\n";
} catch (Exception $e) {
echo "Exception: " . $e->getMessage() . "\n";
} finally {
echo "This will always execute\n";
}
?>
ผลลัพธ์การทำงานของโค้ด:
Exception: Division by zero
This will always execute
ตัวอย่าง
การใช้ finally เพื่อปลดปล่อยทรัพยากร:
<?php
$file = fopen("example.txt", "r");
try {
// ทำงานกับไฟล์
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";
}
}
?>
ผลลัพธ์การทำงานของโค้ด:
File opened successfully
File closed in finally block