การจัดการข้อยกเว้นใน JSP
⚡ สรุปอย่างชาญฉลาด
การจัดการข้อยกเว้นใน JSP จะจัดการข้อผิดพลาดที่เกิดขึ้นระหว่างการประมวลผลโค้ด คล้ายกับการจัดการข้อผิดพลาดอื่นๆ Java บล็อก try-catch ข้อยกเว้นแบ่งออกเป็นสามประเภท ได้แก่ ข้อยกเว้นที่ตรวจสอบได้ ข้อยกเว้นขณะรันไทม์ และข้อยกเว้นข้อผิดพลาด หน้า JSP ใช้แอตทริบิวต์ errorPage และ isErrorPage เพื่อเปลี่ยนเส้นทางและแสดงข้อยกเว้น

ข้อยกเว้นใน JSP คืออะไร
ข้อยกเว้น ใน JSP เกิดขึ้นเมื่อมีข้อผิดพลาดในโค้ดไม่ว่าจะโดยผู้พัฒนาหรือข้อผิดพลาดภายในจากระบบ การจัดการข้อยกเว้นใน JSP จะเหมือนกับใน Java โดยที่เราจัดการข้อยกเว้นโดยใช้บล็อก Try Catch ไม่เหมือน Javaมีข้อยกเว้นใน JSP เมื่อไม่มีข้อผิดพลาดในโค้ด
ประเภทของข้อยกเว้นใน JSP
ข้อยกเว้นใน JSP มีสามประเภท:
- ตรวจสอบข้อยกเว้น
- ข้อยกเว้นรันไทม์
- ข้อผิดพลาดข้อยกเว้น
ตรวจสอบข้อยกเว้น
โดยปกติแล้วข้อผิดพลาดของผู้ใช้หรือปัญหาที่นักพัฒนาไม่เห็นนั้นเรียกว่าข้อยกเว้นที่ตรวจสอบแล้ว ตัวอย่างข้อยกเว้นที่ตรวจสอบแล้วมีดังนี้:
- FileNotFoundException: นี่เป็นข้อยกเว้นที่ได้รับการตรวจสอบ (โดยที่พยายามค้นหาไฟล์เมื่อไม่พบไฟล์บนดิสก์)
- ข้อยกเว้น IO: นี่จะถูกตรวจสอบข้อยกเว้นด้วย หากมีข้อยกเว้นเกิดขึ้นระหว่างการอ่านหรือเขียนไฟล์ ข้อยกเว้น IO จะเพิ่มขึ้น
- SQLException: นี่ถือเป็นข้อยกเว้นที่ถูกตรวจสอบเมื่อไฟล์เชื่อมต่อกับ SQL ฐานข้อมูล และมีปัญหากับการเชื่อมต่อของฐานข้อมูล SQL จากนั้น SQLException จะถูกยกขึ้น
ข้อยกเว้นรันไทม์
ข้อยกเว้นรันไทม์คือข้อยกเว้นที่โปรแกรมเมอร์สามารถหลีกเลี่ยงได้ โดยจะถูกละเว้นในระหว่างการคอมไพล์ ตัวอย่างข้อยกเว้นรันไทม์บางส่วนมีดังนี้:
- ArrayIndexOutOfBoundsException: นี่คือข้อยกเว้นรันไทม์เมื่อขนาดอาร์เรย์เกิน องค์ประกอบ.
- เลขคณิตข้อยกเว้น:นี่ถือเป็นข้อยกเว้นรันไทม์ด้วยเช่นกันเมื่อมีการดำเนินการทางคณิตศาสตร์ใดๆ ที่ไม่ได้รับอนุญาตภายใต้เงื่อนไขปกติ เช่น การหารตัวเลขด้วย 0 จะทำให้เกิดข้อยกเว้น
- ข้อยกเว้น NullPointer: นี่เป็นข้อยกเว้นรันไทม์ซึ่งเกิดขึ้นเมื่อตัวแปรหรือวัตถุเป็นโมฆะเมื่อเราพยายามเข้าถึงสิ่งเดียวกัน นี่เป็นข้อยกเว้นที่พบบ่อยมาก
ข้อผิดพลาด:
ปัญหาเกิดขึ้นเนื่องจากการควบคุมของผู้ใช้หรือโปรแกรมเมอร์ หากเกิดการล้นของสแต็ก อาจเกิดข้อผิดพลาดได้ ตัวอย่างข้อผิดพลาดบางส่วนแสดงไว้ด้านล่าง:
- ความผิดพลาด: ข้อผิดพลาดนี้เป็นคลาสย่อยของ Throwable ซึ่งบ่งชี้ถึงปัญหาร้ายแรงที่แอปพลิเคชันไม่สามารถตรวจจับได้
- ข้อผิดพลาดในการสร้างอินสแตนซ์: ข้อผิดพลาดนี้เกิดขึ้นเมื่อเราพยายามสร้างอินสแตนซ์ของวัตถุแต่ล้มเหลวในการทำเช่นนั้น
- ข้อผิดพลาดภายใน: ข้อผิดพลาดนี้เกิดขึ้นเมื่อมีข้อผิดพลาดเกิดขึ้นจาก JVM เช่น Java เครื่องเสมือน.
ข้อยกเว้นข้อผิดพลาด
เป็นอินสแตนซ์ของคลาส throwable และใช้ในเพจข้อผิดพลาด วิธีการบางส่วนของคลาส throwable ได้แก่:
- สตริงสาธารณะ getMessage() – ส่งคืนข้อความข้อยกเว้น
- โยนสาธารณะ getCause() – ส่งคืนสาเหตุของข้อยกเว้น
- สาธารณะ printStackTracอี() – ส่งคืนสแต็กtrace ของข้อยกเว้น
วิธีจัดการกับข้อยกเว้นใน JSP
นี่คือตัวอย่างวิธีจัดการกับข้อยกเว้นใน JSP:
Exception_example.jsp
<%@ page errorPage="guru_error.jsp" %> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Exception Guru JSP1</title> </head> <body> <% int num = 10; if (num == 10) { throw new RuntimeException("Error condition!!!"); } %> </body> </html>
Guru_error.jsp
<%@ page isErrorPage="true" %> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Exception Page</title> </head> <body> <p>Guru Exception has occurred</p> <% exception.printStackTrace(response.getWriter()); %> </body> </html>
คำอธิบายของรหัส:
Exception_example.jsp
Code 1 แนว: ที่นี่เรากำลังตั้งค่าหน้าข้อผิดพลาดเป็น guru_error.jsp ซึ่งจะใช้เมื่อข้อผิดพลาดจะถูกเปลี่ยนเส้นทาง
Code 15 แนว: เรากำลังใช้ตัวแปร num และตั้งค่าเป็น 10 และตรวจสอบเงื่อนไขหาก num เป็น 10 จากนั้นให้ส่ง Runtime Exception พร้อมข้อความเป็น Error Condition
Guru_error.jsp
Code 1 แนว: ในที่นี้ เราตั้งค่าแอตทริบิวต์ isErrorPage เป็น true
Code 12 แนว: เกิดข้อผิดพลาดขึ้นในไฟล์ exception_example.jsp โดยใช้ object throw และข้อผิดพลาดนั้นจะแสดงขึ้นที่นี่เนื่องจากแอตทริบิวต์ IsErrorPage ถูกตั้งค่าเป็น true เรากำลังพยายามพิมพ์ stack trace โดยใช้ object exception (ซึ่งเป็น object ที่อนุญาตให้ JSP เข้าถึงข้อมูลข้อผิดพลาดได้)trace ของข้อผิดพลาดที่เกิดขึ้นใน exception_example.jsp
เมื่อคุณรันโค้ดข้างต้น คุณจะได้ผลลัพธ์ดังต่อไปนี้:
Output:
เกิดข้อผิดพลาดขึ้นซึ่งถูกโยนมาจาก exception_example.jsp โดยใช้ throw object of runtime exception และเราได้โค้ดข้างต้น นอกจากนี้ยังมีการเรียกใช้ guru_error.jsp ด้วย Guru เกิดข้อผิดพลาดขึ้นกับไฟล์นี้

