[Spring Code] 사용자 정의 예외 클래스와 에러 페이지

2023. 4. 19. 15:47·Java/Spring Boot
728x90
728x90

#  관련 포스팅

  - 예외 처리 : https://young0105.tistory.com/196

 


#  사용자 정의 예외 클래스

  - src/main/java/메인패키지.handler.exception 아래에 생성

 

1
2
3
4
5
6
7
8
9
10
11
12
@Getter
public class CustomException extends RuntimeException {
    
    private HttpStatus status;
 
    public CustomPageException(String message, HttpStatus status) {
        // RuntimeException 클래스의 String 매개변수를 받는 생성자
        super(message);
        this.status = status;
    }
 
}
Colored by Color Scripter
cs

 

 


유형 1) 예외 발생 시, 에러 페이지를 반환하기

#  @ControllerAdvice

  - src/main/java/메인패키지.handler 아래에 생성

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@ControllerAdvice
public class MyPageExceptionHandler {
 
    // 사용자 정의 클래스 활용
    @ExceptionHandler(CustomException.class)
    public ModelAndView handleRuntimePageException(CustomPageException e) {
        
        // 매개변수에 생성해둔 에러 페이지의 경로 및 파일명 기술
        ModelAndView modelAndView = new ModelAndView("errorPage"); // yml에 기술해서, 경로, .jsp 생략
        
        // ModelAndView에는 값을 담아 보낼 수 있음
        modelAndView.addObject("statusCode", HttpStatus.NOT_FOUND.value()); // .value()하면 상태 코드 숫자 반환
        modelAndView.addObject("message", e.getMessage());
 
        return modelAndView;        
 
    }
 
}
Colored by Color Scripter
cs

 

#  에러 페이지

  - src/main/webapp/WEB-INF/view 아래에 생성

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page isErrorPage="true" %>  <!-- 이걸 지정해야 에러 페이지가 됨 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <h1>에러 페이지</h1>
    <p>에러 코드 : ${statusCode}</p>
    <p>에러 메세지 : ${message}</p>
</body>
</html>
Colored by Color Scripter
cs

 

#  사용하기

  - if 문에서 특정 조건에 해당하면 에러 페이지를 반환하는 방식으로 활용할 수 있음

 

1
2
3
if (조건식) {
    throw new CustomException("페이지를 찾을 수 없습니다.", HttpStatus.NOT_FOUND);
}
Colored by Color Scripter
cs

 

 

반응형

유형 2) 예외 발생 시, 경고 창을 반환하고 이전 페이지로 돌아가기

#  @RestControllerAdvice

  - src/main/java/메인패키지.handler 아래에 생성

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@RestControllerAdvice // IoC 대상 + AoP 기반
public class MyRestFullExceptionHandler {
 
    // 사용자 정의 예외 클래스 활용
    @ExceptionHandler(CustomRestfullException.class)
    public String basicException(CustomRestfullException e) {
        StringBuffer sb = new StringBuffer();
        sb.append("<script>");
        sb.append("alert('"+ e.getMessage() +"'); "); // 예외 클래스의 매개변수로 받은 message가 출력됨
        sb.append("history.back();"); // 이전 페이지로 돌아감
        sb.append("</script>");
        return sb.toString();
    }
 
}
Colored by Color Scripter
cs

 

#  사용하기

1
2
3
4
if (조건식) {
    throw new CustomException("잘못된 요청입니다.", HttpStatus.BAD_REQUEST);
}
 
Colored by Color Scripter
cs

 

320x100
반응형
저작자표시 비영리 변경금지 (새창열림)

'Java > Spring Boot' 카테고리의 다른 글

[Spring Boot] 트랜잭션 어노테이션  (0) 2023.04.19
[Spring Boot] Model 클래스 (Entity)와 DTO 클래스  (0) 2023.04.19
[Spring Boot] MyBatis 설정 및 DAO 구현  (1) 2023.04.18
[Spring Boot] TRM (Table Relational Mapping) 기반 모델링  (0) 2023.04.14
[Spring Boot] 프로젝트 초기 세팅  (0) 2023.04.14
'Java/Spring Boot' 카테고리의 다른 글
  • [Spring Boot] 트랜잭션 어노테이션
  • [Spring Boot] Model 클래스 (Entity)와 DTO 클래스
  • [Spring Boot] MyBatis 설정 및 DAO 구현
  • [Spring Boot] TRM (Table Relational Mapping) 기반 모델링
스응
스응
    반응형
    250x250
  • 스응
    이서영의 개발 블로그
    스응
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (384)
      • Java (134)
        • Base (54)
        • Spring Boot (37)
        • JSP (16)
        • Swing (GUI) (20)
        • Design Pattern (7)
      • C# (13)
      • PHP (18)
      • SQL (27)
      • Vue.js (9)
      • Tailwind CSS (4)
      • TypeScript (7)
      • HTML & CSS (27)
      • JavaScript (26)
      • jQuery (10)
      • Android (3)
      • - - - - - - - - - - - - - - (0)
      • Hotkeys (5)
      • CS (30)
      • etc. (13)
      • Error Note (16)
      • Team Project (24)
        • Airlines Web Project (12)
        • University Web Project (6)
        • Strikers 1945 GUI Project (6)
      • My Project (18)
        • Library Web Project (8)
        • Pet Shopping Mall GUI Project (10)
  • 블로그 메뉴

    • Home
    • Write
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    errorNote
    SpringBoot
    tailwindcss
    면접
    js
    개발일지
    jQuery
    Wordpress
    Swing
    Android
    typeScript
    php
    java
    오블완
    Hotkeys
    Codeigniter
    CSS
    SWAGGER
    SQL
    http
    zapier
    티스토리챌린지
    cs
    C#
    SEO
    vuejs
    git
    jsp
    HTML
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
스응
[Spring Code] 사용자 정의 예외 클래스와 에러 페이지
상단으로

티스토리툴바