delete 테스트
@DeleteMapping("/dummy/user/{id}")
public String delete(@PathVariable int id) {
userRepository.deleteById(id);
return "삭제되었습니다. id: " + id;
}
요롷게만 해도 삭제는 되겠지만 없는 데이터의 삭제를 요청하게 되면 에러가 발생하기 때문에 위험한 코드이다.
@DeleteMapping("/dummy/user/{id}")
public String delete(@PathVariable int id) {
try {
userRepository.deleteById(id);
} catch (EmptyResultDataAccessException e) {
return "삭제에 실패하였습니다. 해당 id는 없는 id입니다.";
}
return "삭제되었습니다. id: " + id;
}
try catch 구문으로 예외처리를 꼭 해줘야 한다.
Exception 처리
GlobalExceptionHandler
Exception이 발생했을 때 처리하는 함수로 모든 Exception이 발생하면 GlobalExceptionHandler 클래스로 들어올 수 있도록 @ControllerAdvice 어노테이션을 달아준다.
글로벌 클래스에 들어오면 IllegalArgumentException일때만 처리할 수 있도록 @ExceptionHandler 어노테이션을 달아준다. IllegalArgumentException이 발생하면 e로 전달돼서 이전에 작성해둔 메세지가 return될 것이다.
@ControllerAdvice
@RestController
public class GlobalExceptionHandler {
@ExceptionHandler(value = IllegalArgumentException.class)
public String handleArgumentException(IllegalArgumentException e) {
return "<h1>" + e.getMessage() + "</h1>";
}
}
만약 다른 Exception까지 다 처리하고 싶으면 IllegalArgumentException이 아닌 모든 Exception의 조상인 Exception으로 적어주면 된다.
@ExceptionHandler(value=Exception.class)
public String handleArgumentException(Exception e) {
return "<h1>" + e.getMessage() + "</h1>";
}
출처 : https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9
'Spring > Blog 만들기 with SpringBoot' 카테고리의 다른 글
메인화면 구성 (0) | 2022.07.02 |
---|---|
스프링 기본 파싱 전략과 JSON 통신 (0) | 2022.06.13 |
update 테스트, JPA 영속성 컨텍스트 (0) | 2022.05.16 |
selecte 및 paging 테스트 (0) | 2022.05.10 |
insert 테스트, enum 사용법 (0) | 2022.05.10 |