3

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>

サーブレットのメソッドCustomExceptionの宣言を追加しようとすると、問題が発生します。次のエラーが表示されます。throwsdoGet

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

さて、どうすれば問題を克服できますか?このようなカスタム例外を作成して、スローされたときにエラーページに転送することはできますか? それとも他に方法はありますか?前もって感謝します :)

4

1 に答える 1

4

HttpServletクラスは以下で宣言されているようにdoGetスローします: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[]

于 2012-11-08T05:06:54.467 に答える