2022/12/21 TIL | 예외 처리_비즈니스 로직에 대한 예외 처리

    반응형

    💭 오늘의 학습 전략

    # 비즈니스 적인 예외 던지기(throw)와 예외 던지기

    ◾ Checked / Unchecked Exception

    ◾ throw

    ◽ 사용자 정의 예외

    🌼 학습한 것들

    ◾ Checked Exception

     ▪️ 예외 잡아서 복구/회피 등 구체적인 처리 필요

      - try/catch...

     ▪️ RuntimeException 제외 모든 예외들

      - ClassNotFoundExcepciton

      - IOException 

    ◾ Unchecked Exception

     ▪️ 예외 처리 하지 않아도 됨 == 예외 처리를 강제하지 않는다.

     ▪️ RuntimeException 상속한 예외들

      - NullPointerException

      - ArrayIndexOutOfBounds 등

    ◾ 개발자가 직접 예외를 만들어야 하는 경우

     ▪️ 외부 시스템 연동에서 발생하는 에러

      - 잔액 부족 등

     ▪️ 시스템 내부에서 조회하려는 리소스가 없는 경우

      - 존재하지 않는 회원 등

    사용자 정의 예외 사용

     ▪️ 서비스 계층 → API계층으로 (throw)

     ▪️ RuntimeExcepion을 상속한 예외 클래스를 생성

     ▪️ 던져진 예외는 @RestControllerAdvice 클래스에서 처리

     ▪️ RuntimeException으로 던지는 것은 바람직하지 않다

      - 예외 의도가 불명확해서 예외 정보를 얻기 어려움

    사용자 정의 예외 처리 실습

     ▪️ of() 정적(static) 팩토리 메서드

      - 객체 생성 역할을 하는 메서드

      - 객체 의미 쉽게 알 수 있다 List.of() ... be made of

      - 상속 사용 시 하위 자료형 객체 반환 가능: 팩토리 메서드가 반환값을 가지고 있다

      - 객체 생성 캡슐화 (내부 구현을 모르더라도 쉽게 변환 가능)

      - 생성자의 접근제한자를 private로, 객체 생성을 정적 팩토리 메서드에서만 가능하도록 제한

    🔥 보충이 필요한 것들

    ◾팩토리 메서드에 대해 더 알아보고 싶다.

     

     

    💨 하루를 마치며

    1. 재미있고 어려운 실습이었다.

    2. ExceptionAdvice에서 무조건 매개변수로 받아온 에러에서 정보를 빼서 사용해야 한다고 생각했는데, 이미 정해진 http status를 사용해서 처리해줄 수 있는 방법도 있다는 걸 알았다. 이미 status code와 message를 가지고 있다.

    3. 정적 팩토리 메서드, 리플렉션, 싱글톤, 직렬화, enum... 파면 팔 수록 어려운 자바의 세계 난 어느정도 와있는 걸까??

    반응형

    댓글