예외 처리
프로그램이 처리되는 동안 특정한 문제가 발생했을 때 처리를 중단하고 다른 처리를 하는 것을 오류 처리라고도 함.
웹 애플리케이션에서 오류가 발생하더라도 정상적인 실행 상태를 유지하는 예외처리의 방법으로는
| 예외 처리 방법 | 설명 |
| page 디렉티브 태그를 이용한 예외 처리 | errorPage와 isErrorPage 속성을 이용한다. |
| web.xml 파일을 이용한 예외 처리 | <error-code>또는 <exception-type>요소를 이용한다. |
| try-catch-finally를 이용한 예외 처리 | 자바 언어의 예외 처리 구문을 이용한다. |
** 예외 처리 방법의 우선순위
하나의 웹 애플리케이션 page 디렉티브 태그, web.xml파일, try-catch-finally등의 예외 처리 방법을 모두 사용할 때 다음과 같은 우선순위에 따라 오류 페이지가 호출됨.
- JSP 페이지에서 try-catch-finally문으로 처리하는 경우 발생한 오류 출력
- page 디렉티브 태그 errorPage 속성에서 설정한 오류 페이지를 출력
- JSP 페이지에서 발생한 예외 유형이 web.xml 파일에서 설정한 예이 유형과 동일한 경우 설정한 오류 페이지를 출력
- JSP 페이지에서 발생한 오류 코드가 web.xml 파일에서 설정한 오류 코드와 동일한 경우 설정한 오류 페이지를 출력
- 이러한 항목에 해당되지 않는 경우 웹 서버가 제공하는 기본 오류 페이지를 출력
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 |