본문 바로가기

BackEnd/JSP

[JSP 웹 프로그래밍] 예외 처리 1(page 디렉티브 태그 이용)

728x90
반응형

1. 예외 처리

   ▷  웹 애플리케이션 실행 도중에 발생할 수 있는 오류에 대비한 예외 처리 코드를 작성하여 비정상적인 종료를 막을 수 있음

 

◎ 예외 처리 방법의 종류

 

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

◎ errorPage 속성으로 오류 페이지 호출하기
   ▷ errorPage 속성
      ▶ 오류 페이지를 호출하는 page 디렉티브 태그의 속성

 

   ▷ JSP 페이지가 실행되는 도중에 오류가 발생하면 웹 서버의 기본 오류 페이지를 대신하여 errorPage 속성에 설정한 페이지가 오류 페이지로 호출

 

◎ errorPage 속성을 이용한 오류 페이지 호출

1. errorPage.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page errorPage="errorPage_error.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Exception</title>
</head>
<body>
	name 파라미터 : <%=request.getParameter("name").toUpperCase() %>
</body>
</html>​


2. errorPage_error.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Exception</title>
</head>
<body>
	오류가 발생하였습니다.
</body>
</html>


errorPage.jsp에서 코드를 실행시키면 '오류가 발생하였습니다.' 라는 화면이 나타납니다.


여기서 name의 parameter 값을 받아오려고 했지만 찾을 수 없기 때문에 error가 나타납니다.
따라서 errorPage_error.jsp의 화면이 실행됩니다.

 

◎ isErrorPage 속성으로 오류 페이지 만들기

   ▷ isErrorPage 속성

      ▶ 현재 JSP 페이지를 오류 페이지로 호출하는 page 디렉티브 태그의 속성
      ▶ 이때 오류 페이지에서 exception 내장 객체를 사용할 수 있음

 

◎ isErrorPage 속성을 이용하여 오류 페이지 만들기

1. isErrorPage.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page errorPage="isErrorPage_error.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Exception</title>
</head>
<body>
	name 파라미터 : <%=request.getParameter("name").toUpperCase() %>
</body>
</html>​


2. isErrorPage_error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page isErrorPage="true" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Exception</title>
</head>
<body>
	<p>오류가 발생하였습니다.
	<p> 예외 유형 : <%=exception.getClass().getName() %>
	<p> 오류 메시지 : <%=exception.getMessage() %>
</body>
</html>​


isErrorPage.jsp에서 코드를 실행시키면 아래와 같은 화면이 나타납니다.


위의 예제와 동일하게 name의 parameter 값을 받아오려고 했지만 찾을 수 없기 때문에 error가 나타납니다.
따라서 isErrorPage_error.jsp의 화면이 실행됩니다.

 

 

◎ errorPage와 isErrorPage 속성을 이용하여 예외 처리하기

1. exception.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Exception</title>
</head>
<body>
	<form action="exception_process.jsp" method="post">
		<p> 숫자1 : <input type="text" name="num1">
		<p> 숫자2 : <input type="text" name="num2">
		<input type="submit" value="나누기">
	</form>
</body>
</html>​


아래와 같은 화면이 출력됩니다.



2. exception_process.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page errorPage="exception_error.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Exception</title>
</head>
<body>
	<%
		String num1 = request.getParameter("num1");
		String num2 = request.getParameter("num2");
		int a = Integer.parseInt(num1);
		int b = Integer.parseInt(num2);
		int c = a / b;
		out.print(num1 + " / " + num2 + " = " + c);
	%>
</body>
</html>


결과 화면으로 '12 / 6 = 2' 가 나타납니다.


3. exception_error.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page isErrorPage="true" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Exception</title>
</head>
<body>
	<p>오류가 발생하였습니다.
	<p> 에외 : <%= exception %>
	<p> toString() : <%= exception.toString() %>
	<p> getClass().getName() : <%=exception.getClass().getName() %>
	<p> getMessage() : <%=exception.getMessage() %>
</body>
</html>


만약 숫자 2가 0이라면 error가 발생하게 되며 아래와 같은 화면이 나타납니다.


 

예외 처리는  웹 애플리케이션 실행 도중에 발생할 수 있는 오류에 대비한 예외 처리 코드를 작성하여 비정상적인 종료를 막을 수 있게 만들어줍니다.

 

따라서 오류창이 나타나기 보다는 해당 오류가 발생하면 지정한 페이지로 되돌려 줍니다.

 

에러 처리를 잘하면 어떤 부분에서 문제가 발생했는지 알 수 있겠네요~~

 

많은 분들의 피드백은 언제나 환영합니다!  많은 댓글 부탁드려요~~

 

 

728x90
반응형