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

PHP Nested Exception


แนะนำตัว

บล็อกของความพยายาม - การจับสามารถซ้อนกันได้ไม่เกินระดับที่ต้องการ ข้อยกเว้นจะได้รับการจัดการในลักษณะย้อนกลับ กล่าวคือ การประมวลผลข้อยกเว้นภายในสุดจะดำเนินการก่อน

ตัวอย่าง

ในตัวอย่างต่อไปนี้ inner try block จะตรวจสอบว่าตัวแปรใดค่าหนึ่งจากสองตัวแปรที่ไม่ใช่ตัวเลข และถ้าเป็นเช่นนั้น จะส่งข้อยกเว้นที่ผู้ใช้กำหนด บล็อกลองภายนอกพ่น DivisionByZeroError หากตัวส่วนเป็น 0 มิฉะนั้นจะแสดงการหารของตัวเลขสองจำนวน

ตัวอย่าง

<?php
class myException extends Exception{
   function message(){
      return "error : " . $this->getMessage() . " in line no " . $this->getLine();
   }
}
$x=10;
$y=0;
try{
   if (is_numeric($x)==FALSE || is_numeric($y)==FALSE)
      throw new myException("Non numeric data");
}
catch (myException $m){
   echo $m->message();
   return;
}
if ($y==0)
   throw new DivisionByZeroError ("Division by 0");
echo $x/$y;
}
catch (DivisionByZeroError $e){
   echo $e->getMessage() ."in line no " . $e->getLine();
}
?>

ผลลัพธ์

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้น

Division by 0 in line no 19

เปลี่ยนตัวแปรตัวใดตัวหนึ่งให้เป็นค่าที่ไม่ใช่ตัวเลข

error : Non numeric data in line no 20

หากตัวแปรทั้งสองเป็นตัวเลข ตัวหารจะถูกพิมพ์ออกมา