id로 회원삭제하기
@DeleteMapping("/dummy/user/{id}")
public String delete(@PathVariable int id) {
try {
userRepository.deleteById(id);
} catch (IllegalArgumentException e) {
return "삭제 실패 되었습니다. 해당 id는 DB에 없습니다.";
}
return "삭제되었습니다." + id;
}
try catch 문을 쓴 이유는 없는 id를 삭제했을때 위험이 있어서
에러 org.springframework.dao.EmptyResultDataAccessException
IllegalArgumentException 말고 EmptyResultDataAccessException 을 예외로 넣어준다.
@DeleteMapping("/dummy/user/{id}")
public String delete(@PathVariable int id) {
try {
userRepository.deleteById(id);
} catch (EmptyResultDataAccessException e) {
return "삭제 실패 되었습니다. 해당 id는 DB에 없습니다.";
}
return "삭제되었습니다." + id;
}
없는 5번 id를 넣었을때 EmptyResultDataAccessException 예외가 나온다
최고 부모인 Exception 을 써도 된다. (모든 예외는 Exception 자식이라서 다 해당 됨.)
catch (Exception e)
모든 exception은 Exception의 자식이기 때문에 모든 예외처리가 된다.
그치만 정확하게 예외처리하기 위해선 (IllegalArgumentException , EmptyResultDataAccessException ) 으로 한다.
1번 id 삭제 성공 시
에러페이지 설정하기
1. 패키지 handler 생성
2. GlobalExceptionHandler 클래스 생성
3. exception 이 발생할때 이 함수로 처리한다.
@ControllerAdvice
@RestController
public class GlobalExceptionHandler {
@ExceptionHandler(value = IllegalArgumentException.class)
public String handleArgumentException(IllegalArgumentException e) {
return "<h1>" + e.getMessage() + "<h1>";
}
}
어느곳에서든 예외가 발생하면 모든 exception은 이 함수로 오기 위해서 @ControllerAdvicer 을 쓴다.
예외가 들어왔을때 어떤 예외를 처리할것이냐는
@ExceptionHandler(value = IllegalArgumentException.class) 어노테이션을 써서
IllegalArgumentException 에러를 e에게 전달하고 e.getMessage() 을 리턴한다.
@ExceptionHandler(value = Exception.class) 으로 하면 모든 Exception를 처리 (최고 부모)
@ExceptionHandler(value = IllegalArgumentException.class) 으로 하면 IllegalArgumentException 예외만 처리
'Spring boot | 블로그 만들기' 카테고리의 다른 글
회원가입 | Ajax를 사용하는 이유 , Service, Dto (0) | 2022.11.06 |
---|---|
메인화면, 회원가입 화면, 로그인 화면 (0) | 2022.11.06 |
회원수정 테스트 | save()와 @Transactional 더티체킹 (1) | 2022.11.05 |
회원가입 테스트 | insert , Enum 사용법 (1) | 2022.11.04 |
테이블 만들기 User, Board, Reply (0) | 2022.11.03 |