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