💭 오늘의 학습 전략
# 비즈니스 적인 예외 던지기(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... 파면 팔 수록 어려운 자바의 세계 난 어느정도 와있는 걸까??
'공부기록 > TIL' 카테고리의 다른 글
2022/12/23 TIL | Spring Data JDBC (2) (0) | 2022.12.23 |
---|---|
2022/12/22 TIL | Spring Data JDBC (1) | 2022.12.22 |
2022/12/20 TIL | 예외 처리_Spring MVC에서의 예외 처리 (0) | 2022.12.20 |
2022/12/19 TIL | 서비스 계층 (0) | 2022.12.19 |
2022/12/16 TIL | API 계층 - DTO (0) | 2022.12.16 |
댓글