예외 처리
프로그램이 실행되는 동안 발생한 문제, 오류를 처리하는 것을 의미한다.
예를 들어 예외 처리가 되지 않은 상태에서 웹 사이트를 이동할 때 주소를 잘못 입력하거나 웹 서버에 오류가 발생하면 사용자는 404 같은 페이지를 보게 된다.
이때 발생한 오류, 디렉터리 구조, 톰캣 버전 등 사용자에게 절대 제공해선 안 되는 정보들이 표시되기 때문에 해킹당할 위험이 존재한다.
그렇기 때문에 예외 처리는 매우 중요하다.
예외 처리 방법
예외 처리 | 설명 |
web.xml | 서버가 시작되기 전에 |
page 디렉티브 태그 | 서버가 시작된 후에 |
try-catch-finally | 서버가 시작된 후에 |
web.xml과 Controller의 차이점
web.xml | Controller | |
서버 시작 시 필요한 객체를 미리 생성 | 코드가 실행된 후에 필요한 객체를 생성한다. | |
장점 | 객체가 항상 준비된 상태로 유지 | 메모리 처리 속도가 효율적이다. |
단점 | 메모리, 처리 속도 측면에서 불리하다. | 객체 제공을 보장하지 않는다.(필요 시에만 객체를 생성하기 때문) |
예시 | Security, 예외처리 등의 작업에 사용된다. | Repository의 처리에 사용됨 |
특징 | static, 싱글톤 | 인스턴스/static, 싱글톤 선택 가능 |
page디렉티브 태그
errorPage 속성
현재 JSP 페이지에서 오류 발생 시 지정한 오류 페이지로 이동하여 오류를 처리하게 하는 태그
*isErrorPage 속성으로 지정된 오류 페이지가 필요함
<%@page errorPage="오류페이지경로"%>
isErrorPage 속성
속성 값을 true로 주면 현재 JSP 페이지가 오류를 처리하는 페이지임을 설정한다.
*Exception 객체를 사용할 수 있다. Exception객체를 생성한다고 생각하면 쉽다.( 변수 : exception)
<%@page isErrorPage="true/false"%>
메서드
메서드 | 반환 타입 | 설명 |
getMessage() | String | 예외 유형과 함께 출력되는 메시지를 출력한다. |
toString() | String | 예외 객체 클래스의 이름과 예외 메시지를 모두 반환 |
printStackTrace() | String | 오류 로그를 출력한다. |
getClass().getName() | String | 예외 객체 클래스의 이름만 반환. |
web.xml
error-page
web.xml 파일에 작성하여 특정 오류 발생 시 사용자에게 보여줄 오류 페이지를 설정한다.
<error-page>
<error-code>오류 코드</error-code>
<location>오류 페이지 경로</location>
</error-page>
요소
요소 | 설명 |
error-code | 오류 코드를 설정하는 데 사용됨 |
location | error-code에 작성된 오류 발생시 호출할 오류 페이지의 경로 지정 |
exception-type | 예외 클래스 지정 |
오류 코드
코드 | 설명 | |
200 | 정상 | |
클라이언트 측 오류 |
400 | 클라이언트의 요청이 잘못됨 |
401 | 접근이 허용되지 않음 | |
404 | 페이지가 없다. (경로 오류) | |
405 | 요청된 메서드가 허용되지 않음 | |
서버 측 오류 | 500 | 서버 내부의 에러 |
503 | 서버 과부화 or 보수중 |
예외 유형
예외 유형 | 설명 |
ClassNotFoundException | 클래스를 찾지 못함(객체 생성 X) |
NullPointerException | 파라미터 관련 예외 |
IOException | 입출력 처리 문제 |
try-catch-finally
JAVA의 예외처리와 동일하다
try{
//예외 발생 가능성이 있는 실행문
} catch(Excetion e) {
//예외 처리문
} finally {
//예외와 상관 없이 반드시 실행되야 하는 구문(생략가능)
}
'Back_end > JSP' 카테고리의 다른 글
JSP - 세션 (0) | 2024.10.30 |
---|---|
JSP - 필터 (0) | 2024.10.28 |
JSP - 시큐리티/보안 처리 (0) | 2024.10.28 |
JSP - 다국어 처리 (2) | 2024.10.28 |
JSP - 유효성 검사 (2) | 2024.10.28 |