JSP에서 try...catch 블록으로 예외 처리하기
오류가 발생했을 때 별도의 에러 페이지로 이동시키지 않고, 같은 페이지 안에서 직접 오류를 처리하고 싶다면 try...catch 블록을 활용하면 됩니다. JSP 스크립틀릿(<% %>) 내부에는 일반 Java 코드와 마찬가지로 try-catch 문을 자유롭게 작성할 수 있습니다.
예제 코드
다음은 try...catch 블록을 사용하는 간단한 예제입니다. 아래 코드를 main.jsp 파일에 작성해 보겠습니다.
<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
코드 설명
위 예제에서는 의도적으로 i = i / 0; 코드를 실행하여 0으로 나누는 상황, 즉 ArithmeticException을 발생시킵니다. 이 예외는 일반적인 경우라면 서버 오류 화면(에러 페이지)을 표시하게 되지만, try-catch 블록으로 감싸져 있기 때문에 catch 절에서 예외 객체(e)를 받아 처리합니다.
catch 블록에서는 e.getMessage() 메서드를 호출해 예외의 원인 메시지를 가져오고, out.println()을 통해 브라우저 화면에 바로 출력합니다. 그 결과 에러 페이지로 전환되지 않고, "An exception occurred: / by zero"라는 메시지가 사용자에게 전달됩니다.
이처럼 try-catch 블록을 사용하면 예외 발생 시에도 페이지 흐름을 유지하면서 원하는 방식으로 오류 메시지를 표시하거나 후속 작업을 수행할 수 있습니다.