Spring 예외 처리

Jang990·2023년 2월 2일
0

22년 9월 4일 작성된 글

Spring 예외 처리

예외처리 부분은 더 깊은 공부가 필요하다. 일단 단순한 예외 처리를 위한 공부이다.


사용자에게 에러 내용을 상세하게 보여줄 필요가 없다.
스프링에서 예외 처리 방식은 3가지가 있다. 가장 보편적으로 사용되는 방식은 3번째 방식이다.

1. try-catch
2. ExceptionHandler - 컨트롤러단에서 처리
3. Global Level ExceptionHandler - 컨트롤러에서 클라이언트에 전달 전에 처리

3번째 방식으로 예외처리를 하려면 다음과 같은 코드를 작성하면된다.

@RestController
@RestControllerAdvice // Controller 클래스에 공통된 기능을 적용하기 위해 AOP를 사용하는 어노테이션
public class GlobalExceptionHandler {
	
	@ExceptionHandler(value=IllegalArgumentException.class) //IllegalArgumentException만을 처리하는 ExceptionHandler
	public String handleArgumentException(IllegalArgumentException e) {
		return "<h1>"+e.getMessage()+"<h1>";
	}
}

@ControllerAdvice vs @RestControllerAdvice

@ControllerAdvice는 @Componenet 어노테이션을 가지고 있어 컴포넌트 스캔을 통해 스프링 빈으로 등록된다.
@RestControllerAdvice는 @Controlleradvice와 @ResponseBody 어노테이션으로 이루어져있고 HTML 뷰 보다는 Response body로 값을 리턴할 수 있다.

@ControllerAdvice is meta-annotated with @Component and therefore can be registered as a Spring bean through component scanning. @RestControllerAdvice is meta-annotated with @ControllerAdvice and @ResponseBody, and that means @ExceptionHandler methods will have their return value rendered via response body message conversion, rather than via HTML views.

출처 - 스프링 공식 문서


예외 관련 참고할 내용
https://jeong-pro.tistory.com/195

스프링 예외 처리 관련 참고할 내용
https://velog.io/@kiiiyeon/%EC%8A%A4%ED%94%84%EB%A7%81-ExceptionHandler%EB%A5%BC-%ED%86%B5%ED%95%9C-%EC%98%88%EC%99%B8%EC%B2%98%EB%A6%AC

profile
공부한 내용을 적지 말고 이해한 내용을 설명하자

0개의 댓글