การจัดการข้อยกเว้นใน JSP

ข้อยกเว้นใน JSP คืออะไร

ข้อยกเว้น ใน JSP เกิดขึ้นเมื่อมีข้อผิดพลาดในโค้ดไม่ว่าจะโดยผู้พัฒนาหรือข้อผิดพลาดภายในจากระบบ การจัดการข้อยกเว้นใน JSP จะเหมือนกับใน Java โดยที่เราจัดการข้อยกเว้นโดยใช้บล็อก Try Catch ไม่เหมือน Javaมีข้อยกเว้นใน JSP เมื่อไม่มีข้อผิดพลาดในโค้ด

ประเภทของข้อยกเว้นใน JSP

ข้อยกเว้นใน JSP มีสามประเภท:

  1. ตรวจสอบข้อยกเว้น
  2. ข้อยกเว้นรันไทม์
  3. ข้อผิดพลาดข้อยกเว้น

ตรวจสอบข้อยกเว้น

โดยปกติแล้วข้อผิดพลาดของผู้ใช้หรือปัญหาที่นักพัฒนาไม่เห็นนั้นเรียกว่าข้อยกเว้นที่ตรวจสอบแล้ว ตัวอย่างข้อยกเว้นที่ตรวจสอบแล้วมีดังนี้:

  1. FileNotFoundException: นี่เป็นข้อยกเว้นที่ได้รับการตรวจสอบ (โดยที่พยายามค้นหาไฟล์เมื่อไม่พบไฟล์บนดิสก์)
  2. ข้อยกเว้น IO: นี่จะถูกตรวจสอบข้อยกเว้นด้วย หากมีข้อยกเว้นเกิดขึ้นระหว่างการอ่านหรือเขียนไฟล์ ข้อยกเว้น IO จะเพิ่มขึ้น
  3. SQLException: นี่ถือเป็นข้อยกเว้นที่ถูกตรวจสอบเมื่อไฟล์เชื่อมต่อกับ SQL ฐานข้อมูล และมีปัญหากับการเชื่อมต่อของฐานข้อมูล SQL จากนั้น SQLException จะถูกยกขึ้น

ข้อยกเว้นรันไทม์

ข้อยกเว้นรันไทม์คือข้อยกเว้นที่โปรแกรมเมอร์สามารถหลีกเลี่ยงได้ โดยจะถูกละเว้นในระหว่างการคอมไพล์ ตัวอย่างข้อยกเว้นรันไทม์บางส่วนมีดังนี้:

  1. ArrayIndexOutOfBoundsException: นี่คือข้อยกเว้นรันไทม์เมื่อขนาดอาร์เรย์เกิน องค์ประกอบ.
  2. เลขคณิตข้อยกเว้น:นี่ถือเป็นข้อยกเว้นรันไทม์ด้วยเช่นกันเมื่อมีการดำเนินการทางคณิตศาสตร์ใดๆ ที่ไม่ได้รับอนุญาตภายใต้เงื่อนไขปกติ เช่น การหารตัวเลขด้วย 0 จะทำให้เกิดข้อยกเว้น
  3. ข้อยกเว้น NullPointer: นี่เป็นข้อยกเว้นรันไทม์ซึ่งเกิดขึ้นเมื่อตัวแปรหรือวัตถุเป็นโมฆะเมื่อเราพยายามเข้าถึงสิ่งเดียวกัน นี่เป็นข้อยกเว้นที่พบบ่อยมาก

ข้อผิดพลาด:

ปัญหาเกิดขึ้นเนื่องจากการควบคุมของผู้ใช้หรือโปรแกรมเมอร์ หากเกิดการล้นของสแต็ก อาจเกิดข้อผิดพลาดได้ ตัวอย่างข้อผิดพลาดบางส่วนแสดงไว้ด้านล่าง:

  1. ความผิดพลาด: ข้อผิดพลาดนี้เป็นคลาสย่อยของ Throwable ซึ่งบ่งชี้ถึงปัญหาร้ายแรงที่แอปพลิเคชันไม่สามารถตรวจจับได้
  2. ข้อผิดพลาดในการสร้างอินสแตนซ์: ข้อผิดพลาดนี้เกิดขึ้นเมื่อเราพยายามสร้างอินสแตนซ์ของวัตถุแต่ล้มเหลวในการทำเช่นนั้น
  3. ข้อผิดพลาดภายใน: ข้อผิดพลาดนี้เกิดขึ้นเมื่อมีข้อผิดพลาดเกิดขึ้นจาก 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

เมื่อคุณรันโค้ดข้างต้น คุณจะได้ผลลัพธ์ดังต่อไปนี้:

จัดการข้อยกเว้นใน JSP

Output:

มีการสร้างข้อยกเว้นขึ้นซึ่งเกิดจาก exception_example.jsp โดยใช้ throw object ของข้อยกเว้นรันไทม์ และเราได้รับโค้ดด้านบน นอกจากนี้ ยังเรียก guru_error.jsp จากไฟล์นี้ด้วย ซึ่งทำให้เกิดข้อยกเว้น Guru ขึ้น

สรุป

  • ข้อยกเว้นใน JSP เกิดขึ้นเมื่อมีข้อผิดพลาดในโค้ดโดยนักพัฒนาหรือข้อผิดพลาดภายในจากระบบ
  • ข้อยกเว้นใน JSP มี 3 ประเภท: Checked Exceptions, Runtime Exceptions และ Error Exceptions
  • ข้อยกเว้นที่ถูกตรวจสอบโดยปกติแล้วจะเป็นข้อผิดพลาดของผู้ใช้หรือปัญหาที่นักพัฒนาไม่เห็นจะเรียกว่าเป็นข้อยกเว้นที่ถูกตรวจสอบ
  • ข้อยกเว้นรันไทม์เป็นสิ่งที่โปรแกรมเมอร์สามารถหลีกเลี่ยงได้ พวกเขาจะถูกละเว้นในขณะที่รวบรวม
  • ข้อยกเว้นข้อผิดพลาดเป็นตัวอย่างหนึ่งของคลาสที่สามารถโยนได้ และจะใช้ในหน้าแสดงข้อผิดพลาด