คำสั่ง finally

บล็อก finally ใช้ร่วมกับโครงสร้าง try และ catch เพื่อจัดการข้อยกเว้น โค้ดภายใน finally จะทำงานในทุกกรณี ไม่ว่าจะเป็นเมื่อบล็อก try ทำงานสำเร็จหรือเมื่อมีข้อยกเว้นเกิดขึ้น

ไวยากรณ์

phptry {
  // โค้ดที่อาจทำให้เกิดข้อยกเว้น
} catch (Exception $e) {
  // การจัดการข้อยกเว้น
} finally {
  // โค้ดที่จะทำงานในทุกกรณี
}

ตัวอย่าง

ตัวอย่างเมื่อโค้ดทำงานสำเร็จ:

php<?php
try {
  $res = 10 / 2;
  echo "Result: " . $res . "\n";
} catch (Exception $e) {
  echo "Exception: " . $e->getMessage() . "\n";
} finally {
  echo "This will always execute\n";
}
?>

ผลลัพธ์การทำงานของโค้ด:

phpResult: 5
This will always execute

ตัวอย่าง

ตัวอย่างเมื่อมีการจัดการข้อยกเว้น:

php<?php
try {
  $res = 10 / 0;
  echo "Result: " . $res . "\n";
} catch (Exception $e) {
  echo "Exception: " . $e->getMessage() . "\n";
} finally {
  echo "This will always execute\n";
}
?>

ผลลัพธ์การทำงานของโค้ด:

phpException: Division by zero
This will always execute

ตัวอย่าง

การใช้ finally เพื่อปลดปล่อยทรัพยากร:

php<?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";
  }
}
?>

ผลลัพธ์การทำงานของโค้ด:

phpFile opened successfully
File closed in finally block

ดูเพิ่มเติม

  • โครงสร้าง try,
    ซึ่งใช้สำหรับการจัดการข้อยกเว้น
  • คลาส Exception,
    ซึ่งเป็นคลาสพื้นฐานสำหรับข้อยกเว้นทั้งหมด