Мне сложно консолидировать ошибки в моем приложении.В настоящее время мой error.jsp
выглядит следующим образом (частично):
<%@ page isErrorPage="true" %>
<%@page contentType="text/html"%>
<%@page import="java.util.*"%>
<%@page import="javax.servlet.*"%>
<%@page import="javax.servlet.http.*"%>
<%@page import="java.util.Calendar"%>
<%@page import="java.text.SimpleDateFormat"%>
<html>
<%
String code = null, message = null, type = null, uri = null, time = null;
Object codeObj=null, messageObj=null, typeObj=null;
if (request.getAttribute("javax.servlet.error.status_code") != null)
codeObj = request.getAttribute("javax.servlet.error.status_code");
if (request.getAttribute("javax.servlet.error.message") != null)
messageObj = request.getAttribute("javax.servlet.error.message");
if (request.getAttribute("javax.servlet.error.exception_type")!=null)
typeObj = request.getAttribute("javax.servlet.error.exception_type");
if (codeObj != null) code = codeObj.toString();
if (messageObj != null) message = messageObj.toString();
if (typeObj != null) type = typeObj.toString();
uri = (String) request.getAttribute("javax.servlet.error.request_uri");
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
time = sdf.format(cal.getTime());
String error = "Code:\t\t" + code + "\nType:\t\t" + type + "\nURL:\t\t" + uri + "\nTime:\t\t" + time +"\nMessage:\t" + message;
%>
Это прекрасно работает во всех сценариях, кроме !: Иногда в моем приложении я ловлю встроенные исключения в классе MyException
сследующий код:
catch(MyException ex){
log.error(ex.getMessage(), uivex);
String originalURL = "/errorpages/error.jsp?errorcode=" + (ex.getMajor() + ex.getMinor()) + "&errormessage=" + ex.getMessage();
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(address);
dispatcher.forward(request,response);
}
Теперь проблема в том, что когда меня перенаправляют на страницу error.jsp
... Вместо того, чтобы видеть фактическую ошибку из MyException
класса ... Я вижу NullPointerException
потому что в javax.servlet.error.status_code
ничего нет, а страница объявлена как isErrorPage="true"
Что мне делать в этом случае?Одним из решений является создание совершенно другой страницы error.jsp (назовите ее error1.jsp) и пересылка исключений из класса MyException
на эту страницу.Хотя хотелось бы, чтобы все было в одном месте.