더미 데이터 delete

삭제를 구현해보겠다.
아래처럼 간단하게(?) 코드를 짜보았다. (이렇게 위험하게 짜면 안된다는 거 알지만 ㅎㅎ)

	@DeleteMapping("/dummy/user/{id}")
    public String deleteUser(@PathVariable int id) {
        userRepository.deleteById(id);

        return "삭제되었습니다. id : " + id;
    }

그런데 이 코드의 문제는 만약 id가 User 객체에 없다면 에러가 발생한다.
현재는 id가 1, 2, 3인 User만 DB에 있다.


없는 id인 5를 넘겼더니 예상했듯이 에러가 발생한다.

	@DeleteMapping("/dummy/user/{id}")
    public String deleteUser(@PathVariable int id) {

        try {
            userRepository.deleteById(id);
        } catch (IllegalArgumentException e) {
            return "삭제에 실패하였습니다. 해당 id는 DB에 없습니다.";
        }

        return "삭제되었습니다. id : " + id;
    }

try-catch 문을 사용하여 IllegalArgumentException 으로 에러 처리를 해보았다.

여전히 위와 똑같은 에러가 발생한다.

뭐지 ❓❓❓❓❓❓❓

아!! EmptyResultDataAccessException 을 사용해야 하네?!

	@DeleteMapping("/dummy/user/{id}")
    public String deleteUser(@PathVariable int id) {

        try {
            userRepository.deleteById(id);
        } catch (EmptyResultDataAccessException e) {
            return "삭제에 실패하였습니다. 해당 id는 DB에 없습니다.";
        }

        return "삭제되었습니다. id : " + id;
    }

된다!!

💡 모든 Exception의 부모인 Exception을 걸어도 된다. (Exception e) !!

하지만, 부모 Exception을 걸면 다른 Exception이 걸릴 수 있는 위험이 있으므로 정확하게 EmptyResultDataAccessException 을 잡는 것이 좋다.


id가 1번인 User 삭제 완료~!

좋은 웹페이지 즐겨찾기