예외처리

    Custom Exception: 검사 예외, 런타임 예외 무엇을 써야할까

    포인트 사용 시 포인트가 부족하면 IllegalArgumentException(extends RuntimeException) 예외 발생 @Entity public class Point { private Integer amount; ... public Integer usePoint(Integer amount) { checkEnoughPoint(amount); this.amount -= amount; return this.amount; } private void checkEnoughPoint(Integer amount) { if(this.amount - amount < 0) throw new IllegalArgumentException("사용할 포인트가 부족합니다."); } } 표준 예외로 간단하게 쓰기 위..

    @ExceptionHandler는 어떻게 예외를 처리할 수 있을까?

    결론부터 말하자면 DispatcherServlet 덕분에 가능하다. DispatcherServlet의 동작 방식을 확장하여 만들어진 여러 가지 전략 중 예외 처리 전략도 있다. HandlerMapping(URL과 요청정보를 기준으로 어떤 컨트롤러를 사용할 건지 결정) HandlerAdapter(HandlerMapping 전략에 따라 선택한 컨트롤러가 어떤 타입이든 DispatcherServlet가 사용할 수 있게 함) ViewResolver(컨트롤러가 리턴한 뷰 이름을 참고해서 적절한 뷰 오브젝트를 찾아줌) ... HandlerExceptionResolver(예외 처리) 예외가 발생했을 때 종류에 따라 클라이언트에게 알려주는 작업은 DispatcherServlet을 통해 처리되어야 하기 때문이다. @Co..