แนะนำตัว
รหัสใน สุดท้าย บล็อกจะถูกดำเนินการเสมอไม่ว่าจะมีข้อยกเว้นในบล็อก 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