แนะนำตัว
รหัสใน สุดท้าย บล็อกจะถูกดำเนินการเสมอไม่ว่าจะมีข้อยกเว้นในบล็อก ry หรือไม่ บล็อกนี้ปรากฏขึ้นหลังจากบล็อก catch หรือแทนที่จะบล็อก catch
จับแล้วบล็อกในที่สุด
ในตัวอย่างต่อไปนี้ ให้ทั้งบล็อก catch และบล็อกสุดท้าย หากเกิดข้อยกเว้นในบล็อกการลอง โค้ดทั้งสองจะถูกดำเนินการ หากไม่มีข้อยกเว้น ในที่สุดก็มีการดำเนินการบล็อกเท่านั้น
ตัวอย่าง
<?php function div($x, $y) { if (!$y) { throw new Exception('Division by zero.'); } return $x/$y; } try { echo div(10,0) . "\n"; } catch (Exception $e) { echo 'Caught exception: ', $e->getMessage(), "\n"; } finally{ echo "This block is always executed\n"; } // Continue execution echo "Execution continues\n"; ?>
ผลลัพธ์
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้น
Caught exception: Division by zero. This block is always executed Execution continues
เปลี่ยนคำสั่งใน try block เพื่อไม่ให้เกิดข้อยกเว้น
ตัวอย่าง
<?php function div($x, $y) { if (!$y) { throw new Exception('Division by zero.'); } return $x/$y; } try { echo div(10,5) . "\n"; } catch (Exception $e) { echo 'Caught exception: ', $e->getMessage(), "\n"; } finally{ echo "This block is always executed\n"; } // Continue execution echo "Execution continues\n"; ?>
ผลลัพธ์
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้น
2 This block is always executed Execution continues
สุดท้ายบล็อกเท่านั้น
ตัวอย่างต่อไปนี้มีสองบล็อกลอง หนึ่งในนั้นมีเพียงบล็อกเท่านั้น ลองบล็อกการเรียกฟังก์ชัน 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(), "\n"; } } try { echo div(10,0) . "\n"; } finally{ echo "This block is always executed\n"; } // Continue execution echo "Execution continues\n"; ?>
ผลลัพธ์
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้น
Caught exception: Division by zero. This block is always executed Execution continues