Jsp&Servlet

오류 처리 방법 2가지(try-catch, web.xml)

살구르 2017. 1. 24. 17:20

1)try-catch 로 처리

2)web.xml에서 처리 : 어떤 오류에 대해서 어떻게 처리 할 것이냐?

<error-page>

<error-code></error-code>

<location></location>

</error-page>

 

<error-page>

<exception-type></exception-type>

<location></location>

</error-page>

 

-위에서 지정한 error-codeexception-type의 오류가 발생했을 때, location 에 지정해놓은 페이지로 포워딩 된다. 이 때, 아래의 5가지의 정보(name)를 세팅해서 넘겨준다.(request.setAttribute()

javax.servlet.error.status_code

javax.servlet.error.message

javax.servlet.error.exception_type

javax.servlet.error.exception

javax.servlet.error.request_uri // 오류가 발생한 페이지의 uri 정보를 알려준다.

오류처리 페이지에서는 request.getAttribute()를 이용해 해당 정보들을 가져온다.

 

ex)

//web.xml

<error-page>
 <exception-type>java.lang.NullPointerException</exception-type>
 <location>/errorHandlePage</location>
  </error-page>

 

 

//ErrorTest.java

@WebServlet("/errorTest1")
public class ErrorTest extends HttpServlet{
 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
   /*
    위에서 지정한 error-code나 exception-type의 오류가 발생했을 때, location 에 지정해놓은 페이지로 포워딩 된다.
    이 때, 아래의 5가지의 정보를 세팅해서 넘겨준다.
   javax.servlet.error.status_code
   javax.servlet.error.message
   javax.servlet.error.exception_type
   javax.servlet.error.exception
   javax.servlet.error.request_uri // 오류가 발생한 페이지의 uri 정보를 알려준다.
   */
  response.setContentType("text/html;charset=utf-8");
  PrintWriter out = response.getWriter();
  String param = request.getParameter("p");
  out.print(param.length());
  out.close();
 } 
}

//ErrorHandlePage.java

@WebServlet("/errorHandlePage")
public class ErrorHandlePage extends HttpServlet{
 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
  response.setContentType("text/html;charset=utf-8");
  response.setStatus(200);
  PrintWriter out = response.getWriter();
  out.print("<h1>오류처리페이지!</h1>");
  String uri = (String)request.getAttribute("javax.servlet.error.request_uri");
  Throwable error = (Throwable)request.getAttribute("javax.servlet.error.exception");
  out.print(uri+":"+error);
  out.close();
 } 
}