Spring - 11. 에러 처리

Bloooooooooooooog..·2023년 4월 27일

스프링에서의 예외 처리

스프링에서는 크게 세 가지 예외 처리 방법이 있다. try~catch문을 이용한 기존 자바의 예외 처리 방식은 스프링에서 그렇게 자주 사용되지 않는다. 그것을 제외한 다른 두 가지 방법을 공부해보자!

1. 하나의 컨트롤러에서 발생하는 예외를 모두 처리 @ExceptionHandler(에러종류.class)

컨트롤러 하나에서 이뤄지는 모든 예외를 처리할 수 있다.

	//** 클래스 내부에 작성 ** 

	@ExceptionHandler(Exception.class)
    				// 처리할 Exception 종류
	public String exceptionHandler(Exception e, Model model) {							//매개변수로 예외를 받는다
		e.printStackTrace();
        // 에러 원인을 콘솔에 찍는다.
		
		model.addAttribute("errorMessage", "서비스 이용 중 문제가 발생했습니다.");
		
		model.addAttribute("e", e);
		// 에러 처리용 페이지에서 보여줄 값을 attribute에 담아준다.
        
        
		return "common/error"; 
        // 에러 처리용 페이지에서 화면 구성을 해준다.
	}

2. 전역 처리를 위한 에러 처리 클래스 생성@ControllerAdvice 사용

// 전역에서 처리할 클래스를 만들어 사용할 수 있다. 
// @ControllerAdvice는 전역의 @Controller에서 발생한 오류를 잡아준다.

@ControllerAdvice 
public class ExceptionController {

	// 내부에 처리할 Exception을 작성해준다.
	@ExceptionHandler(SQLException.class)
	public String exceptionHandler(Exception e, Model model) {
		e.printStackTrace();
		
		model.addAttribute("errorMessage", "서비스 이용 중 문제가 발생했습니다.");
		
		model.addAttribute("e", e);
		
		return "common/error";
	}
    
    // 여러가지 예외 처리 가능
    @ExceptionHandler(NullPointerException.class)
	public String exceptionHandler(Exception e, Model model) {
		e.printStackTrace();
		
		model.addAttribute("errorMessage", "서비스 이용 중 문제가 발생했습니다.");
		
		model.addAttribute("e", e);
		
		return "common/error";
	}
}
profile
공부와 일상

0개의 댓글