在servlet中抛出自定义异常

时间:2012-11-08 05:04:29

标签: java java-ee exception servlets servlet-3.0

我想在发生某些特定问题时从servlet中抛出一个自定义exception,有点像以下内容。

public class CustomException extends Throwable {

    private String[] errArray;

    public CustomException(String[] errArray){
        this.errArray = errArray;
    }

    public String[] getErrors(){
        return errArray;
    }

}

然后,当抛出此异常时,我想将用户重定向到特定的错误页面。

<error-page>
    <exception-type>com.example.CustomException</exception-type>
    <location>/WEB-INF/jsp/errorPage.jsp</location>
</error-page>

这是错误页面,我想使用异常隐式对象。

<%@ page isErrorPage="true" %>
<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %>

<my:head title="Error"></my:head>
<body>
    <% String errArray = exception.getErrors(); %>
</body>
</html>

现在,当我在servlet的CustomException方法的throws声明中添加doGet时,会出现问题。我收到以下错误:

Exception CustomException is not compatible with throws clause in HttpServlet.doGet(HttpServletRequest, HttpServletResponse)

现在我该如何克服这个问题?甚至可以像这样定制异常&amp;当它被抛出时转发到错误页面?或者还有其他方法吗? 在此先感谢:)

1 个答案:

答案 0 :(得分:4)

HttpServletdoGet会抛出ServletException,如下所示:

    protected void doGet(HttpServletRequest req,
                 HttpServletResponse resp)
          throws ServletException,
                 java.io.IOException

请让CustomException扩展ServletException以符合方法规范。

编辑:在你的error.jsp中,获取错误:

<% String[] errArray = null; 
  if(exception instanceof CustomException) {
     errArray = (CustomException)exception.getErrors();
  } 
%>

请注意:返回String[]