- Today
- Total
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- JSP
- Hostinger
- 클론코딩
- spring boot
- function
- PROCEDURE
- 티스토리챌린지
- pl/sql
- javascript
- 워스프레스
- sql
- 프로시저
- dbeaver
- 환경세팅
- 오라클
- 문제해결
- 트러블슈팅
- 이클립스
- 함수
- 엘리멘터
- wordpress
- 자바스크립트
- 오류해결
- PLSQL
- iframe
- Oracle
- 워드프레스
- 오블완
- 배열
Archives
개발 공부중
[JSP] JSP에서 에러를 처리하는 방법(try - catch/throws/web.xml) 본문
JSP 에서의 예외처리 방법
1. try - catch- finally사용하기
try{
//일반예외, 실행 예외 발생 가능 코드
catch(예외 클래명 참조 변수명){
//예외가 발생했을 때 처리
} finally{
//예외 발생 여부에 상관 없이 무조건 실행 (생략가능)
}
특정 코드 블록에서 발생할 수 있는 에러를 줄이는데에 도움이 된다.
데이터베이스 연결 시 오류 처리, 널 포인트 익셉션 (NullPointerException) 처리 할 때 많이 사용된다.
<%@ page import="java.sql.*, javax.sql.*" %>
<%
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "username", "password");
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT * FROM mytable");
while (rs.next()) {
out.println(rs.getString("columnname"));
}
} catch (SQLException e) {
out.println("데이터베이스 오류: " + e.getMessage());
} catch (ClassNotFoundException e) {
out.println("드라이버를 찾을 수 없습니다: " + e.getMessage());
} finally {
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
out.println("리소스를 닫는 도중 오류 발생: " + e.getMessage());
}
}
%>
2. throws 키워드로 예외 전가
리턴 타입 메서드명(입력매개변수) throws 예외 클래스명 {
//예외 발생 코드
}
자신을 호출한 시점으로 예외를 전가할 수 있다.
public void connectToDatabase() throws SQLException, ClassNotFoundException {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "username", "password");
// 데이터베이스 작업 수행
conn.close();
}
<%@ page import="java.sql.*, javax.sql.*" %>
<%
try {
connectToDatabase();
} catch (SQLException e) {
out.println("데이터베이스 오류: " + e.getMessage());
} catch (ClassNotFoundException e) {
out.println("드라이버를 찾을 수 없습니다: " + e.getMessage());
}
%>
3. web.xml 파일을 사용해서 예외 처리
에러 타입별로 에러페이지를 보여줄 수 있다.
3-1. 에러 처리 페이지를 작성한다.
isErrorPage="true" 속성을 사용하여 예외 처리 페이지임을 보여준다.
error500.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isErrorPage="true"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>에러 페이지</title>
</head>
<body>
<h1> 500 오류가 발생했습니다</h1>
<p>에러 타입: <%= exception.getClass().getTypeName() %></p>
<p>에러 메시지: <%= exception.getMessage() %></p>
</body>
</html>
3-2. web.xml 파일에 에러시 넘어갈 페이지를 설정해준다.
<exception-type>: 예외의 전체 클래스 이름(패키지 포함)을 지정
<location>: 지정된 예외가 발생했을 때 표시할 JSP 페이지의 경로를 지정
web.xml
<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/WEB-INF/err/errorNull.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/WEB-INF/err/error404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/WEB-INF/err/error500.jsp</location>
</error-page>
3-3. 오류 발생 시 오류 코드 별 jsp 페이지로 이동하게 된다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Example Page</title>
</head>
<body>
<h1> Page</h1>
<%
// 의도적으로 예외를 발생시킴
int result = 10 / 0; // ArithmeticException 발생
%>
</body>
</html>
'JSP' 카테고리의 다른 글
[JSP] An exception occurred processing JSP page 문제해결 (0) | 2024.07.09 |
---|---|
JSTL <c:set> 태그와 <c:out> 태그 사용방법 (0) | 2023.09.24 |
[JSP] Scope (0) | 2023.02.27 |
[JSP] for문/ 내장객체 사용하기 (0) | 2023.02.24 |
[JSP] JSP의 실행순서와 컴파일된 jsp의 java, class 파일 위치 (0) | 2023.02.23 |
Comments