jusung-c
으 하기싫어
jusung-c
  • 공부 기록 (96)
    • Spring (42)
      • Spring 기초 이론 (8)
      • Spring 핵심 원리 - 기본 (9)
      • Blog 만들기 with SpringBoot (25)
    • JAVA (7)
      • Java 문법 (2)
      • 객체지향의 사실과 오해 (5)
    • Algorithm (47)
      • 자료구조 (3)
      • 완전탐색 (22)
      • 정렬 (4)
      • 이분탐색 (12)
      • 투 포인터 (4)
hELLO · Designed By 정상우.
jusung-c

으 하기싫어

Spring/Blog 만들기 with SpringBoot

delete 테스트, Exception 처리

2022. 5. 16. 20:37

 

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
    'Spring/Blog 만들기 with SpringBoot' 카테고리의 다른 글
    • 메인화면 구성
    • 스프링 기본 파싱 전략과 JSON 통신
    • update 테스트, JPA 영속성 컨텍스트
    • selecte 및 paging 테스트
    jusung-c
    jusung-c

    티스토리툴바