แนะนำตัว
บล็อกของความพยายาม - การจับสามารถซ้อนกันได้ไม่เกินระดับที่ต้องการ ข้อยกเว้นจะได้รับการจัดการในลักษณะย้อนกลับ กล่าวคือ การประมวลผลข้อยกเว้นภายในสุดจะดำเนินการก่อน
ตัวอย่าง
ในตัวอย่างต่อไปนี้ 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
หากตัวแปรทั้งสองเป็นตัวเลข ตัวหารจะถูกพิมพ์ออกมา