본문 바로가기
JSP

[JSP] 예외처리

by lmyourpearl 2025. 12. 4.

예외 처리

프로그램이 처리되는 동안 특정한 문제가 발생했을 때 처리를 중단하고 다른 처리를 하는 것을 오류 처리라고도 함.

웹 애플리케이션에서 오류가 발생하더라도 정상적인 실행 상태를 유지하는 예외처리의 방법으로는

예외 처리 방법 설명
page 디렉티브 태그를 이용한 예외 처리 errorPage와 isErrorPage 속성을 이용한다.
web.xml 파일을 이용한 예외 처리 <error-code>또는 <exception-type>요소를 이용한다.
try-catch-finally를 이용한 예외 처리 자바 언어의 예외 처리 구문을 이용한다.

 

** 예외 처리 방법의 우선순위

하나의 웹 애플리케이션 page 디렉티브 태그, web.xml파일, try-catch-finally등의 예외 처리 방법을 모두 사용할 때 다음과 같은 우선순위에 따라 오류 페이지가 호출됨.

  1. JSP 페이지에서 try-catch-finally문으로 처리하는 경우 발생한 오류 출력
  2. page 디렉티브 태그 errorPage 속성에서 설정한 오류 페이지를 출력
  3. JSP 페이지에서 발생한 예외 유형이 web.xml 파일에서 설정한 예이 유형과 동일한 경우 설정한 오류 페이지를 출력
  4. JSP 페이지에서 발생한 오류 코드가 web.xml 파일에서 설정한 오류 코드와 동일한 경우 설정한 오류 페이지를 출력
  5. 이러한 항목에 해당되지 않는 경우 웹 서버가 제공하는 기본 오류 페이지를 출력

page 디렉티브 태그를 이용한 예외 처리

page 디렉티브 태그에 errorPage와 isErrorPage 속성을 사용하여 오류 페이지를 호출하는 방법.

 

  • errorPage 속성

오류 페이지를 호출하는 속성

<%@ page errorPage="오류 페이지URL" %>
  • isErrorPage 속성

현재 JSP 페이지를 오류 페이지로 호출하는 page 디렉티브 태그의 속성

<%@ page isErrorPage="true" %>
메소드 형식 설명
getMessage( ) String 오류 이벤트와 함께 들어오는 메시지를 출력한다.
toString( ) String 오류 이벤트의 toString()을 호출하여 간단한 오류 메시지를 확인한다.
printStackTrace( ) String 오류 메시지의 발생 근원지를 찾아 단계별로 오류를 출력한다.
오류가 발생하였습니다.

예외 : java.lang.ArithmeticException: / by zero

toString() : java.lang.ArithmeticException: / by zero

getClass().getName() : java.lang.ArithmeticException

getMessage() : / by zero

web.xml 파일을 이용한 예외 처리

web.xml 파일을 통해 오류 상태와 오류 페이지를 보여주는 방법으로, <error-page>…</error-page>요소 내에 처리할 오류 코드나 오류 유형 및 오류 페이지를 호출함.

<error-page>
	<error-code>...</error-code>|<exception-type>...</error-exception-type>
	<location>...</location>
</error-page>
요소 설명
<error-code> 오류 코드를 설정하는데 사용
<exception-type> 자바 예외 유형의 정규화된 클래스 이름을 설정하는 데 사용
<location> 오류 페이지의 URL을 설정하는데 사용

  • 오류 코드로 오류 페이지 호출하기
<error-page>
	<error-code>오류 코드</error-code>
	<location>오류 페이지의 URI</location>
</error-page>

 

코드 설명
200 요청이 정상적으로 처리된다.
307 임시로 페이지가 리다이렉트된다.
400 클라이언트의 요청이 잘못된 구문으로 구성된다.
401 접근이 허용되지 않는다.
404 지정된 URL을 처리하기 위한 자원이 존재하지 않는다(페이지가 없음).
405 요청된 메소드가 허용되지 않는다.
500 서버 내부의 에러이다(JSP에서 예외가 발생하는 경우)
503 서버가 일시적으로 서비스를 제공할 수 없다(서버 과부하나 보수 중인 경우).

 

  • 예외 유형으로 오류 페이지 호출하기
<error-page>
	<exception-type>예외 유형</exception-type>
	<location>오류 페이지의 URI</location>
</error-page>

 

 

예외 유형 설명
ClassNotFoundException 클래스를 찾지 못했을 때 발생한다.
NullPointerException null 오브젝트로 접근했을 때 발생한다.
ClassCastException 변환할 수 있는 유형으로 객체를 변환할 때 발생한다.
OutOfMemoryException 메모리 부족으로 메모리를 확보하지 못했을 때 발생한다.
StackOverflowError 스택 오버플로일 때 발생한다.
ArrayIndexOutOfBoundException 범위 밖의 배열 첨자를 설정했을 때 발생한다.
NegativeArraySizeException 음수로 배열 크기를 설정했을 때 발생한다.
illegalArgumentException 부적절한 인자를 메소드에 전달할 때 발생한다.
IOException 입출력 처리에 문제가 있을 때 발생한다.
NumberFormatException 부적절한 문자열을 수치로 변환하려 할 때 발생한다.
ArithmeticException 어떤 값을 0으로 나누었을 때 발생한다.

try-catch-finally

자바의 예외 처리 구문으로 스트립틀릿 태그에 작성하며, try 구문에는 예외가 발생할 수 있는 코드를 작성하고, catch 구문에는 오류가 발생할 수 있는 예외 사항을 예측하여 오류를 처리하는 코드를 작성하고, finally 구문에는 try 구문이 실행된 후 실행할 코드를 작성하는데 생략할 수 있음.

try {
		// 예외가 발생할 수 있는 실행문
}
catch(처리할 예외 유형 설정) {
		// 예외 처리문
}
[finally {
		// 예외와 상관없이 무조건 실행되는 문장(생략 가능)
}]

 

웹서블릿에서의 jsp 호출(forward와 include 방식)

// forward() 메소드 방식

JSP 페이지를 호출하는 순간 서블릿 프로그램이 실행을 멈추며 JSP 페이지로 넘어가 그곳에서 실행하고 프로그램이 끝남.

// include() 메소드 방식

JSP 페이지가 실행된 후 나머지 서블릿 프로그램이 실행됨.

'JSP' 카테고리의 다른 글

[JSP] 세션  (0) 2025.12.05
[JSP] 필터  (1) 2025.12.05
[JSP] 시큐리티  (0) 2025.12.04
[JSP] 다국어 처리  (0) 2025.12.04
[JSP] 유효성 검사  (0) 2025.12.04