Latest web development tutorials

JSP 예외 처리

JSP 응용 프로그램을 작성할 때 프로그래머가 몇 가지 버그를 놓칠 수는 BUG 어디서나 프로그램에 나타날 수 있습니다. JSP 코드는 일반적으로 다음과 같은 범주 예외입니다 :

  • 검사 예외 : 예외 일반 사용자 오류 또는 프로그래머 예상치 못한 오류가 체크. 예를 들어 개방 될 수있는 파일 인 경우 만, 파일, 다음 예외가 발생을 찾을 수있다. 이 이상은 더 이상 단순히 무시 컴파일 할 수 없습니다.
  • 런타임 예외 : 예외 프로그래머가 피할 수있는 런타임,이 이상은 컴파일시에 무시됩니다.
  • 오류 : 가지 예외가 없지만, 문제는 사용자 또는 프로그래머가 제어 할 수없는 점이다. 오류가 종종 코드에서 간과, 당신은 거의 방법을 취할 수 있습니다. 예로서, 또는 스택 오버플로 오류에 의해. 이러한 오류는 컴파일시에 무시됩니다.

이 섹션에서는 런타임 예외 및 오류를 처리 할 수있는 몇 가지 간단하고 우아한 방법을 제공합니다.


사용 예외 개체

예외 객체는 오류 페이지로 제공하는 Throwable의 서브 클래스의 인스턴스이다. 다음 표는 중요한 방법에서의 Throwable 클래스의 일부 목록입니다 :

아니오. 방법 설명
(1) 공공 문자열 GetMessage 함수 ()

예외를 돌려줍니다. 이 정보는 생성자의 Throwable의 초기화
공공 ThrowablegetCause ()

예외의 원인,의 Throwable 타입의 객체를 돌려줍니다
3 공공 문자열 toString ()

클래스의 이름을 돌려줍니다
4 공공 무효의 printStackTrace ()

System.err에 대한 예외 스택 추적 출력
(5) 공개되는 StackTraceElement [] getStackTrace ()에 ()

어레이의 스택 트레이스 요소 형태의 예외 스택 추적을 반환
6 공공 ThrowablefillInStackTrace ()

현재 스택 추적의 Throwable 객체를 작성

JSP는 각 JSP 페이지에 대한 오류 페이지를 지정하는 옵션을 제공합니다. 페이지가 예외를 throw 할 때마다, JSP 컨테이너는 자동으로 오류 페이지를 호출합니다.

다음 예제 main.jsp 오류 페이지를 지정합니다. 사용 <페이지하여 ErrorPage = @ % "를 XXXXX는"%는> 지시어는 오류 페이지를 지정합니다.

<%@ page errorPage="ShowError.jsp" %>

<html>
<head>
   <title>Error Handling Example</title>
</head>
<body>
<%
   // Throw an exception to invoke the error page
   int x = 1;
   if (x == 1)
   {
      throw new RuntimeException("Error condition!!!");
   }
%>
</body>
</html>

이제 ShowError.jsp 다음 문서를 작성 :

<%@ page isErrorPage="true" %>
<html>
<head>
<title>Show Error Page</title>
</head>
<body>
<h1>Opps...</h1>
<p>Sorry, an error occurred.</p>
<p>Here is the exception stack trace: </p>
<pre>
<% exception.printStackTrace(response.getWriter()); %>

주목, ShowError.jsp 파일 사용 <% @의 페이지 isErrorPage = % "진정한"> 예외 인스턴스 변수를 생성하는 데 필요한 JSP 컴파일러를 지시하는 지시자.

이제 다음과 같은 결과를 얻을 수, main.jsp 페이지에 액세스하려고 :

java.lang.RuntimeException: Error condition!!!
......

Opps...
Sorry, an error occurred.

Here is the exception stack trace:

오류 페이지에서 JSTL 태그를 사용

JSTL 태그는 오류 페이지 ShowError.jsp를 작성하는 데 사용할 수 있습니다. 코드 예이 예에서 코드 로직은 거의 동일하지만,이 경우 코드는 더 좋은 구조를 가지고, 더 자세한 정보를 제공 할 수있다 :

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page isErrorPage="true" %>
<html>
<head>
<title>Show Error Page</title>
</head>
<body>
<h1>Opps...</h1>
<table width="100%" border="1">
<tr valign="top">
<td width="40%"><b>Error:</b></td>
<td>${pageContext.exception}</td>
</tr>
<tr valign="top">
<td><b>URI:</b></td>
<td>${pageContext.errorData.requestURI}</td>
</tr>
<tr valign="top">
<td><b>Status code:</b></td>
<td>${pageContext.errorData.statusCode}</td>
</tr>
<tr valign="top">
<td><b>Stack trace:</b></td>
<td>
<c:forEach var="trace" 
         items="${pageContext.exception.stackTrace}">
<p>${trace}</p>
</c:forEach>
</td>
</tr>
</table>
</body>
</html>

결과는 다음과 같습니다 :

JSP-예외에-1


사용하려고 ... catch 블록

이 페이지 예외 처리를 넣어 원하고, 다른 예외를 다르게 처리하는 경우에, 당신은 시도 ... catch 블록을 사용해야합니다.

이 다음 예는 코드가 main.jsp에 배치됩니다 시도 ... catch 블록을 사용하는 방법을 보여줍니다 :

<html>
<head>
   <title>Try...Catch Example</title>
</head>
<body>
<%
   try{
      int i = 1;
      i = i / 0;
      out.println("The answer is " + i);
   }
   catch (Exception e){
      out.println("An exception occurred: " + e.getMessage());
   }
%>
</body>
</html>

그것은 다음과 같은 결과를 얻을 수, main.jsp를 방문하려고 :

An exception occurred: / by zero