Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

การจัดการข้อยกเว้น PHP ด้วยในที่สุด


แนะนำตัว

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