inblog logo
|
LHS's Study Space
    스프링부트

    [스프링 부트] 25. 게시판 v3 예외처리 추가

    lhs's avatar
    lhs
    Nov 21, 2024
    [스프링 부트] 25. 게시판 v3 예외처리 추가
    Contents
    3. Exception400, Exception4042. MyControllerAdvice3. BoardService
     

    3. Exception400, Exception404

    public class Exception400 extends RuntimeException { public Exception400(String message) { super(message); } }
    • HTTP 400 오류를 나타내는 사용자 정의 예외 클래스
    public class Exception404 extends RuntimeException { public Exception404(String message) { super(message); } }
    • HTTP 404 오류를 나타내는 사용자 정의 예외 클래스

    2. MyControllerAdvice

    @ControllerAdvice public class MyControllerAdvice { @ResponseBody @ExceptionHandler(Exception400.class) public String err400(Exception400 e) { System.out.println("err400"); String body = """ <script> alert('${msg}'); history.back(); </script> """.replace("${msg}", e.getMessage()); return body; } @ResponseBody @ExceptionHandler(Exception404.class) public String err404(Exception404 e) { System.out.println("err404"); String body = """ <script> alert('${msg}'); history.back(); </script> """.replace("${msg}", e.getMessage()); return body; } }
    • 예외가 발생했을 때 처리할 로직을 정의하는 ControllerAdvice 클래스
    • @ResponseBody 어노테이션을 사용하여, 예외 발생 시 문자열로 구성된 JavaScript 경고 메시지를 응답 본문으로 바로 반환한다.
    • @ExceptionHandler 어노테이션을 사용하여 HTTP 코드 400과 404인 경우를 각각 처리한다.

    3. BoardService

    @RequiredArgsConstructor @Service public class BoardService { private final BoardRepository boardRepository; @Transactional public void 게시글수정(int id, BoardRequest.UpdateDTO updateDTO) { // Board board = boardRepository.findById(id).orElseThrow(() -> new RuntimeException("해당 id의 게시글이 없습니다 : " + id)); Board board = boardRepository.findById(id).orElseThrow(() -> new Exception404("해당 id의 게시글이 없습니다 : " + id)); board.update(updateDTO.getTitle(), updateDTO.getContent()); } public BoardResponse.UpdateFormDTO 게시글수정화면보기(int id) { // Board board = boardRepository.findById(id).orElseThrow(() -> new RuntimeException("해당 id의 게시글이 없습니다 : " + id)); Board board = boardRepository.findById(id).orElseThrow(() -> new Exception404("해당 id의 게시글이 없습니다 : " + id)); return new BoardResponse.UpdateFormDTO(board); } public BoardResponse.DetailDTO 게시글상세보기(int id) { // Board board = boardRepository.findById(id).orElseThrow(() -> new RuntimeException("해당 id의 게시글이 없습니다 : " + id)); Board board = boardRepository.findById(id).orElseThrow(() -> new Exception404("해당 id의 게시글이 없습니다 : " + id)); return new BoardResponse.DetailDTO(board); } }
    • RuntimeException으로 처리하던 예외를 직접 구현한 Exception404로 처리한다.
    Share article
    Contents
    3. Exception400, Exception4042. MyControllerAdvice3. BoardService

    LHS's Study Space

    RSS·Powered by Inblog