การจัดการข้อยกเว้น JSP
เมื่อเขียนใช้ JSP โปรแกรมเมอร์อาจพลาด BUG บางข้อผิดพลาดอาจปรากฏที่ใดก็ได้ในโปรแกรม รหัส JSP โดยทั่วไปยกเว้นประเภทต่อไปนี้:
- ข้อยกเว้นการตรวจสอบ: การตรวจสอบข้อยกเว้นเป็นข้อผิดพลาดหรือผู้ใช้ทั่วไปโปรแกรมเมอร์ข้อผิดพลาดที่ไม่คาดฝัน ตัวอย่างเช่นถ้าแฟ้มถูกจะเปิด แต่ไม่สามารถหาไฟล์แล้วยกเว้นจะโยน ความผิดปกติเหล่านี้ไม่สามารถรวบรวมจะถูกละเว้นเพียง
- Runtime ข้อยกเว้น: โปรแกรมเมอร์ยกเว้น Runtime อาจมีการหลีกเลี่ยงความผิดปกตินี้จะถูกละเว้นที่รวบรวมเวลา
- ข้อผิดพลาด: ไม่มีข้อยกเว้น แต่ปัญหาก็คือว่ามันอยู่นอกเหนือการควบคุมของผู้ใช้หรือโปรแกรมเมอร์ ข้อผิดพลาดที่มักจะถูกมองข้ามในรหัสที่คุณแทบจะไม่สามารถใช้มันอย่างไร โดยวิธีการเช่นหรือข้อผิดพลาดกองล้น ข้อผิดพลาดเหล่านี้จะถูกละเว้นที่รวบรวมเวลา
ในส่วนนี้จะให้เป็นวิธีที่ง่ายและสง่างามไม่กี่ที่จะจัดการกับข้อยกเว้น Runtime และข้อผิดพลาด
ใช้ข้อยกเว้นวัตถุ
ยกเว้นวัตถุเป็นตัวอย่างของประเภทรอง Throwable มีจำหน่ายเฉพาะในหน้าข้อผิดพลาด ตารางต่อไปนี้แสดงบางส่วนของชั้น Throwable ในวิธีที่สำคัญ:
เลขที่ | วิธีการและคำอธิบาย |
---|---|
1 | String สาธารณะ getMessage () ส่งกลับข้อยกเว้น ข้อมูลนี้จะเริ่มต้นได้ใน Throwable สร้าง |
2 | ThrowablegetCause สาธารณะ () ผลตอบแทนที่สาเหตุของข้อยกเว้นวัตถุประเภท Throwable |
3 | สาธารณะ String toString () ส่งกลับชื่อของชั้น |
4 | โมฆะสาธารณะ printStackTrace () ยกเว้นในกรณีที่สแต็คร่องรอยส่งออกไปยัง System.err |
5 | ประชาชน StackTraceElement [] getStackTrace () ในรูปแบบขององค์ประกอบสแต็คร่องรอยของอาร์เรย์กลับร่องรอยยกเว้นสแต็ค |
6 | ThrowablefillInStackTrace สาธารณะ () ร่องรอยสแต็คในปัจจุบันเติมวัตถุ Throwable |
JSP มีตัวเลือกให้ระบุหน้าข้อผิดพลาดสำหรับแต่ละหน้า JSP เมื่อใดก็ตามที่หน้าพ่นยกเว้น JSP ภาชนะโดยอัตโนมัติจะเรียกหน้าข้อผิดพลาด
ตัวอย่างต่อไปนี้ main.jsp ระบุหน้าข้อผิดพลาด ใช้ <% @ หน้า errorPage = "XXXXX"%> สั่งระบุหน้าข้อผิดพลาด
<%@ page errorPage="ShowError.jsp" %> <html> <head> <title>Error Handling Example</title> </head> <body> <% // Throw an exception to invoke the error page int x = 1; if (x == 1) { throw new RuntimeException("Error condition!!!"); } %> </body> </html>
ตอนนี้เขียนเอกสารดังต่อไปนี้ ShowError.jsp:
<%@ page isErrorPage="true" %> <html> <head> <title>Show Error Page</title> </head> <body> <h1>Opps...</h1> <p>Sorry, an error occurred.</p> <p>Here is the exception stack trace: </p> <pre> <% exception.printStackTrace(response.getWriter()); %>