Xử lý ngoại lệ trong JSP
Ngoại lệ trong JSP là gì?
Trường hợp ngoại lệ trong JSP xảy ra khi có lỗi trong mã do nhà phát triển hoặc lỗi nội bộ từ hệ thống. Xử lý ngoại lệ trong JSP giống như trong Java nơi chúng tôi quản lý các ngoại lệ bằng cách sử dụng các khối Try Catch. Không giống như Java, cũng có những ngoại lệ trong JSP ngay cả khi không có lỗi trong mã.
Các loại ngoại lệ trong JSP
Các ngoại lệ trong JSP có ba loại:
- Đã kiểm tra ngoại lệ
- Ngoại lệ thời gian chạy
- Lỗi ngoại lệ
Đã kiểm tra các trường hợp ngoại lệ
Thông thường, lỗi của người dùng hoặc các vấn đề mà nhà phát triển không nhìn thấy được gọi là ngoại lệ đã kiểm tra. Một số ví dụ về ngoại lệ đã kiểm tra là:
- FileNotFoundException: Đây là một ngoại lệ được kiểm tra (trong đó nó cố gắng tìm một tệp khi không tìm thấy tệp đó trên đĩa).
- Ngoại lệ IO: Đây cũng là ngoại lệ được kiểm tra nếu có bất kỳ ngoại lệ nào xảy ra trong quá trình đọc hoặc ghi tệp thì ngoại lệ IO sẽ được nâng lên.
- Ngoại lệ SQL: Đây cũng là một ngoại lệ được kiểm tra khi tệp được kết nối với SQL cơ sở dữ liệu và có vấn đề với khả năng kết nối của cơ sở dữ liệu SQL thì SQLException sẽ được nâng lên
Ngoại lệ thời gian chạy
Ngoại lệ thời gian chạy là ngoại lệ mà lập trình viên có thể tránh được. Chúng bị bỏ qua tại thời điểm biên dịch. Một số ví dụ về ngoại lệ thời gian chạy là:
- ArrayIndexOutOfBoundsNgoại lệ: Đây là một ngoại lệ thời gian chạy khi kích thước mảng vượt quá các yếu tố.
- Số họcException: Đây cũng là một ngoại lệ trong thời gian chạy khi có bất kỳ phép toán nào không được phép trong điều kiện bình thường, ví dụ: chia một số cho 0 sẽ cho một ngoại lệ.
- Ngoại lệ NullPulum: Đây cũng là một ngoại lệ thời gian chạy được nêu ra khi một biến hoặc một đối tượng có giá trị rỗng khi chúng ta cố gắng truy cập vào những biến đó. Đây là một ngoại lệ rất phổ biến.
Các lỗi:
Vấn đề phát sinh do sự kiểm soát của người dùng hoặc lập trình viên. Nếu tràn ngăn xếp, thì lỗi có thể xảy ra. Một số ví dụ về lỗi được liệt kê dưới đây:
- lỗi: Lỗi này là một lớp con của lỗi có thể ném được, biểu thị các sự cố nghiêm trọng mà ứng dụng không thể nắm bắt được.
- Lỗi khởi tạo: Lỗi này xảy ra khi chúng tôi cố gắng khởi tạo một đối tượng nhưng không thực hiện được điều đó.
- Lỗi bên trong: Lỗi này xảy ra khi có lỗi xảy ra từ JVM tức là Java Máy ảo.
Ngoại lệ lỗi
Đây là một trường hợp của lớp throwable và được sử dụng trong các trang lỗi. Một số phương thức của lớp throwable là:
- Chuỗi công khai getMessage() – trả về thông báo ngoại lệ.
- Công khai có thể ném đượcCause() – trả về nguyên nhân của ngoại lệ
- Bản in công khaiStackTrace()– trả về dấu vết của ngoại lệ.
Cách xử lý ngoại lệ trong JSP
Đây là một ví dụ về cách xử lý ngoại lệ trong 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>
Giải thích mã:
Exception_example.jsp
Dòng mã 1: Ở đây chúng tôi đang đặt trang lỗi thành guru_error.jsp, trang này sẽ được sử dụng khi lỗi được chuyển hướng.
Dòng mã 15: chúng tôi đang lấy một biến num và đặt nó thành 10 và kiểm tra một điều kiện nếu num là 10 thì sẽ đưa ra Ngoại lệ thời gian chạy với thông báo là Điều kiện lỗi.
Guru_error.jsp
Dòng mã 1: Ở đây chúng tôi đang đặt isErrorPageattribute thành true.
Dòng mã 12: Ngoại lệ đã được nêu ra trong ngoại lệ_example.jsp bằng cách sử dụng đối tượng ném và ngoại lệ đó sẽ được hiển thị ở đây vì thuộc tính IsErrorPage được đánh dấu là đúng. Bằng cách sử dụng đối tượng ngoại lệ (đây là một đối tượng cho phép JSP truy cập dữ liệu ngoại lệ.), chúng tôi đang cố gắng in dấu vết của lỗi đã xảy ra trong ngoại lệ_example.jsp.
Khi bạn thực thi đoạn mã trên, bạn sẽ nhận được kết quả sau:
Đầu ra:
Ngoại lệ đã được đưa ra từ exception_example.jsp bằng cách sử dụng đối tượng throw của ngoại lệ thời gian chạy và chúng ta nhận được mã ở trên. Ngoài ra, guru_error.jsp được gọi từ đó Ngoại lệ Guru đã xảy ra từ tệp này.
Tổng kết
- Các ngoại lệ trong JSP xảy ra khi có lỗi trong mã do nhà phát triển hoặc lỗi nội bộ của hệ thống.
- Các ngoại lệ trong JSP có 3 loại: Ngoại lệ được kiểm tra, Ngoại lệ thời gian chạy và Ngoại lệ lỗi
- Ngoại lệ được kiểm tra thường là lỗi của người dùng hoặc các sự cố mà nhà phát triển không nhìn thấy được gọi là ngoại lệ được kiểm tra.
- Các ngoại lệ về thời gian chạy là ngoại lệ mà lập trình viên có thể tránh được. Chúng bị bỏ qua tại thời điểm biên dịch.
- Ngoại lệ lỗi là một thể hiện của lớp có thể ném được và nó được sử dụng trong các trang lỗi.