본문 바로가기
JSP/JSP기초

JSP try-catch-finally를 이용한 예외처리

by 미눅스[멘토] 2023. 7. 11.
728x90

try-catch-finally를 이용한 예외처리

우선순위가 가장 높은 방법이다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Exception</title>
</head>
<body>
	<!--
	POST방식 
	요청 URL : tryCatch_process.jsp
	요청파라미터 : {num1=12&num2=6n}
	
	GET방식 
	요청 URL : exception_process.jsp?num1=12&num2=6
	요청파라미터 : num1=12&num2=6n
	 -->
	<form action="tryCatch_process.jsp" method="post">
		<p>숫자1 : <input type="text" name="num1" /></p>
		<p>숫자2 : <input type="text" name="num2" /></p>
		<p><input type="submit" value="나누기" /></p>
	</form>
</body>
</html>

 

여기서 숫자2 : 6n문자열 보냄

 

 

tryCatch_process.jsp로 간다

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%-- <%@ page errorPage="exception_error.jsp" %> --%>
<!DOCTYPE html>
<html>
<head>
<title>Exception</title>
</head>
<body>
	<% //스크립틀릿
// 	POST방식 
// 	요청 URL : exception_process.jsp
// 	요청파라미터 : {num1=12&num2=6}
	
	
	try{
		String num1 = request.getParameter("num1");	//"12"
		String num2 = request.getParameter("num2");	//"6"
		
		
		//문자를 숫자로 형변환
		int a = Integer.parseInt(num1); //12
		int b = Integer.parseInt(num2); //12
		int c = a / b;
		out.print("<p>" + num1 +"/" + num2 + "=" + c + "</p>");
	}catch(NumberFormatException e){
		//오류 발생시 tryCatch_error.jsp로 포워딩
		/*
			1) forwarding : jsp를 해석 -> 컴파일 -> html리턴 받음. 데이터를 전달할 수 있음
			2) redirect : URL를 재요청. 데이터를 전달하기 어려움
		*/
		//request 객체와 response객체를 전달
		//tryCatch_error.jsp에서도 요청파라미터인 ?num1=12&num2=6n을 사용할 수 있게됨
		RequestDispatcher dispatcher = 
			request.getRequestDispatcher("tryCatch_error.jsp");
		dispatcher.forward(request, response);
	}
	
	%>
</body>
</html>

여기서 오류처리하고 catch에서  forwad방식으로 다음 사이트로 보냄

 

RequestDispatcher dispatcher = 
request.getRequestDispatcher("tryCatch_error.jsp");
dispatcher.forward(request, response);
}를 써서 Parameter값을 그대로

 

tryCatch_error.jsp 파일로 보냄

 

tryCatch_error.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
	<p>잘못된 데이터가 입력되었습니다.</p>
	<p>숫자 1 : <%=request.getParameter("num1")%></p>
	<p>숫자 2 : <%=request.getParameter("num2")%></p>
</body>
</html>

 

결과