4장 예외

2023. 3. 29. 13:12스터디/토비 스터디

728x90

# 예외 종류

## Error 

시스템에 뭔가 비정상적인 상황이 발생

주로 VM에서 발생

애플리케이션 코드에서 잡으려고 하면 안 됨

 

## Exception : checked exception

try catch 블록 혹은 throws를 무조건 던져줘야

## Exception : unchecked exception

RuntimeException 하위 클래스들

오류가 있을 때 발생하도록 의도된 것들

 

 

 

# 예외처리 방법

## 예외 복구

예외상황을 파악하고 문제를 해결해서 정상 상태도 돌려놓는 것

기본 작업 흐름이 불가능하면 다른 작업 흐름으로 자연스럽게 유도

## 예외처리 회피

예외처리를 자신이 담당하지 않고 자신을 호출한 쪽으로 던져버리는 것

허나, 콜백/템플릿처럼 긴밀하게 역할을 분담하고 있는 관계가 아니라면 자신의 코드에서 발생하는 예외를 그냥 던저버리는 건 무책임한 회피

예외를 회피하는 것은 예외를 복구하는 것처럼 의도가 분명해야

## 예외 전환

예외를 복구해서 정상적인 상태로는 만들 수 없기 때문에 예외를 메서드 밖으로 던짐

적절한 예외로 전환해서 던짐

내부에서 발생한 예외를 그대로 던지는 것이 그 예외상황에 대한 적절한 의미를 부여해주지 못하는 경우에 사용

예외를 처리하기 쉽고 단순하게 만들기 위해 포장하는 경우도 있음. 주로 checked를 unchecked로 바꾸는 경우에 사용

 

# 예외처리 전략

## 런타임 예외의 보편화

차라리 애플리케이션 차원에서 예외상황을 미리 파악, 예외가 발생하지 않도록 차단,

프로그램의 오류나 외부 환경으로 인해 예외가 발생하는 경우라면 빨리 해당 요청의 작업을 취소하고, 서버 관리자나 개발자에게 통보

자바 환경이 서버로 이동하면서 체크 예외의 활용도와 가치는 점점 떨어지고 있음

컴파일러가 예외처리를 강제하지 않으므로 신경쓰지 않으면 예외상황을 충분히 고려하지 않을 수도 있기 때문에 API 문서화나 사용법을 자세히 설명 필요

 

## 애플리케이션 예외

낙관적인 예외처리 기법

애플리케이션 자체의 로직에 의해 의도적으로 발생시키고, 반드시 catch해서 무엇인가 조치를 취하도록 요구

### 예외처리 방법

1. 다른 종류의 리턴 값을 반환 : 호출한 측은 반드시 리턴값을 확인, 일관된 예외상황에서의 결과 값에 대한 정책 및 사전에 상수 정의해둔 표준 코드가 완벽하게 갖춰져야

2. 비즈니스적인 의미를 띤 예외 던짐 : 의도적으로 체크 예외로 만들어 자주 발생 가능한 예외 상황에 대한 로직 구현을 강제

 

728x90

'스터디 > 토비 스터디' 카테고리의 다른 글

6장 AOP  (0) 2023.04.02
5장 서비스 추상화  (0) 2023.03.29
3장 템플릿  (0) 2023.03.29
2장 : 테스트  (0) 2023.03.20
1장 : 오브젝트와 의존관계  (0) 2023.03.20