The Debugging Chronicles : "코드의 미학"

[JSP 내장객체] exception, out 본문

서버프로그래밍 JSP

[JSP 내장객체] exception, out

sweetseonah1004 2024. 8. 7. 10:02
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<%
		int n1 = 10;
		int n2 = 0 ;
		int res = n1/n2;
		out.println("<h1>"+n1+ "/" +n2+" = "+res+"</h1>");
	%>
	
</body>
</html>

 

위의 코드를 실행하면 다음과 같은 에러가 난다.

 

 

에러는 500대 에러이다
원인은  백, 서버 or DB, java, c or M에서 문제가 있을음 알 수 있다.

 

자바로 코드를 입력한 구간 중 라인 넘버 14행을 확인해보면
int res = n1/ n2;에서 문제가 나고 있다.

 

자세히 확인해 보면 0으로 나누었기 때문에 나는 에러라는 내용을 확인해 볼 수 있다.

 

해결방안

 

1)n2 를 0이 아닌 다른 정수로 설정

2) try-catch로 예외처리
3) 에러 페이지로 이동 처리를 한다.
예를 들어 네이버웹툰페이지를 보면 유료 회차를 요청하면,
메인 목록으로 이동시킨다. 혹은  없는 회차를 요청하면,

(이전에는 최신 회차로 이동시켰음)
메인목록으로 이동시킴

 

웹에서 간단한 에러는 3번으로 처리하는 경우가 많다.

 

우리도 에러페이지 이동으로 에러를 해결해 보겠다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" errorPage="error/error.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<%
		int n1 = 10;
		int n2 = 0 ;
		int res = n1/n2;
		out.println("<h1>"+n1+ "/" +n2+" = "+res+"</h1>");
	%>
	
</body>
</html>

 

가장 상단에 errorPage="error/error.jsp" 를 추가해 준다

 

이 때,  응집도와 유지보수성을 높이기 위해 error페이지도 폴더별로 관리해준다.

 

error.jsp 파일을 만들어 주고 다음과 같이 코드를 입력한다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isErrorPage="true" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	
	<h1>에러가 발생했습니다!</h1>
	<h1>관리자에게 문의해주세요!</h1>

	<%= exception %>

</body>
</html>

 

라인 2에 isErrorPage="true"부분이 중요하다.

 

화면에 출력하면

exception자리에서 어떤 에러인지 출력이 된다.

 

이때 어떠한 문제가 발생했는지 확인해 보기 위해 exception이라는 객체를 사용했다.

이전에 변수로 선언한 적 없다.

이는 내장 객체이다!!

 

page 지시어 isErrorPage="true" 설정 을 추가하면
exception 객체를 내장해준다!!

 

이와 같은 내장 객체가 하나 더 있었으니...

바로 out 이다.

위에서는