การจัดการข้อยกเว้นใน JSP
ข้อยกเว้นใน 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() – ส่งคืนข้อความข้อยกเว้น
- สาธารณะ ThrowablegetCause() – ส่งคืนสาเหตุของข้อยกเว้น
- สาธารณะ printStackTrace()– ส่งคืนสแต็กเทรซของข้อยกเว้น
วิธีจัดการกับข้อยกเว้นใน 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
รหัสบรรทัด 1: ที่นี่เรากำลังตั้งค่าหน้าข้อผิดพลาดเป็น guru_error.jsp ซึ่งจะใช้เมื่อข้อผิดพลาดจะถูกเปลี่ยนเส้นทาง
รหัสบรรทัด 15: เรากำลังใช้ตัวแปร num และตั้งค่าเป็น 10 และตรวจสอบเงื่อนไขหาก num เป็น 10 จากนั้นให้ส่ง Runtime Exception พร้อมข้อความเป็น Error Condition
Guru_error.jsp
รหัสบรรทัด 1: ที่นี่เรากำลังตั้งค่า isErrorPageattribute ให้เป็นจริง
รหัสบรรทัด 12: ข้อยกเว้นได้รับการยกขึ้นในข้อยกเว้น _example.jsp โดยใช้อ็อบเจ็กต์การโยน และข้อยกเว้นนั้นจะแสดงที่นี่เมื่อแอตทริบิวต์ IsErrorPage ถูกทำเครื่องหมายว่าเป็นจริง การใช้ข้อยกเว้น (นี่คือออบเจ็กต์ที่อนุญาตให้เข้าถึงข้อมูลข้อยกเว้นโดย JSP) ออบเจ็กต์ที่เรากำลังพยายามพิมพ์สแต็กเทรซของข้อผิดพลาดซึ่งเกิดขึ้นในข้อยกเว้น _example.jsp
เมื่อคุณรันโค้ดข้างต้น คุณจะได้ผลลัพธ์ดังต่อไปนี้:
Output:
มีการสร้างข้อยกเว้นขึ้นซึ่งเกิดจาก exception_example.jsp โดยใช้ throw object ของข้อยกเว้นรันไทม์ และเราได้รับโค้ดด้านบน นอกจากนี้ ยังเรียก guru_error.jsp จากไฟล์นี้ด้วย ซึ่งทำให้เกิดข้อยกเว้น Guru ขึ้น
สรุป
- ข้อยกเว้นใน JSP เกิดขึ้นเมื่อมีข้อผิดพลาดในโค้ดโดยนักพัฒนาหรือข้อผิดพลาดภายในจากระบบ
- ข้อยกเว้นใน JSP มี 3 ประเภท: Checked Exceptions, Runtime Exceptions และ Error Exceptions
- ข้อยกเว้นที่ถูกตรวจสอบโดยปกติแล้วจะเป็นข้อผิดพลาดของผู้ใช้หรือปัญหาที่นักพัฒนาไม่เห็นจะเรียกว่าเป็นข้อยกเว้นที่ถูกตรวจสอบ
- ข้อยกเว้นรันไทม์เป็นสิ่งที่โปรแกรมเมอร์สามารถหลีกเลี่ยงได้ พวกเขาจะถูกละเว้นในขณะที่รวบรวม
- ข้อยกเว้นข้อผิดพลาดเป็นตัวอย่างหนึ่งของคลาสที่สามารถโยนได้ และจะใช้ในหน้าแสดงข้อผิดพลาด