예외 처리

Angelo·2020년 12월 21일
0

SPRING

목록 보기
13/34

✔ 예외처리


방법

  1. 메서드 내에서의 예외 상황을 예측해서 처리하는 try-catch문
  2. 요구사항에 의한 예외 처리
  3. 스프링 시큐리티에서 인터셉터로 잡아 예외처리(ex: UnautorizedException)

@ExceptionHandler

@Controller, @RestController가 적용된 Bean내에서 발생하는 예외를 잡아 하나의 메서드에서 처리해주는 기능

@RestController
public class MyRestController {
	...
	...
    @ExceptionHandler(NullPointerException.class)
    public Object nullex(Exception e) {
    	System.err.println(e.getClass());
        return "myService";
	}
}
@ControllerAdvice("")
public class ExceptionController {
	
     private static final Logger LOG = LoggerFactory.getLogger(ExceptionController.class);

  private ModelAndView mav;

  @ExceptionHandler(Exception.class)
  public ModelAndView handleException(HttpServletRequest request, Exception exception) throws Exception {
    LOG.error("error : {}", exception);

    String path = getResponsePath(request);

    mav = new ModelAndView(path);
    mav.addObject("Error", "서버에 오류가 발생하였습니다.");

    return mav;
}

try-catch


try {
// 예외가 생길 가능성이 있는 코드 작성
} catch (Exception e) {
// 예외처리 코드
e.printStackTrace();
}

----

public class Mathematics {
	public static void main(String[] args) {
		int num1, num2;
		num1 = 12;
		num2 = 0;
		try {
			System.out.println(num1 / num2);
		} catch (ArithmeticException e) {
			System.out.println("0으로는 값을 나눌 수가 없습니다.");
		}
	}
}

       

출력문구

  • e.getMessage() : 에러이벤트와 함께 들어오는 메세지 출력
  • e.toString() : 에러이벤트의 toString()을 호출해서 간단한 에러 메세지 확인
  • e.printStackTrace() : 에러메세지의 발생 근원지를 찾아서 단계별로 에러를 출력

throws

  • 사용자가 직접 예외를 발생시켜주고 싶은 부분에 throw Exceptions을 통하여 예외를 처리
	public void test2() throws Exception {
		

		int num1, num2;
		num1 = 12;
		num2 = 0;
		try {
			System.out.println(num1 / num2);
		} catch (ArithmeticException e) {
			System.out.println("0으로는 값을 나눌 수가 없습니다.");
//			e.printStackTrace();
//			return;
		}
		
	}
profile
나만의 학습 노트

0개의 댓글