Effective Java 10장 예외 - 1
해당 블로그는 Effective 3을 읽고 공부한 내용을 정리한 블로그입니다.
P386 예외는 진자 예외 상황에서만 사용하라
- 예외는 오직 예외 상황에서만 써야 한다. 절대로 일상적인 제어 흐름용으로 쓰여선 안된다.
P390 복구할 수 있는 상황에서는 검사 예외를, 프로그래밍 오류에는 런타임 예외를 사용하라
문제 상황을 알리는 타입(throwable)
- 검사 예외 : 호출하는 쪽에서 복구를 해야하는 상황이면 검사 예외를 사용
- 런타임 예외 : 프로그래밍 오류를 나타낼 때
- ex : Array?IndexOutOfBoundsException이 발생 즉 전제조건을 만족하지 못할때 발생
- 에러 : JVM자원 부족, 불변식 깨짐 등 더 이상 수행을 계속할수 상황에 삳용
- 구현하는 비검사 throawable든 모두 RuntimeException의 하위 클래스
Exception - Error 간단 정리
Exception | Error |
---|---|
개발자가 프로그래밍상 핸들링 가능하다면 | Error like 메모리관련 |
처리 가능 | 불가능 |
Exception is due to programmatic logic and it is recoverable. Therefore it must be handled using either try-catch block or throws clause | Error is due to lack of system resources and it is non-recoverable. Therefore it isn’t feasible to handled by programmer |
checked - unchecked 간단 정리
checked exception | unchecked exception | |
---|---|---|
처리 여부 | 반드시 예외 처리해야함 | 명시적인 처리를 강제하지 않음 |
확인 시점 | 컴파일 단계(실행 전에 알수 있음, ide에서 컴파일시 이미 체크를 다해줌, 아 좋은 세상) | 실행 단계(실행 해야 알수 있음) |
예외 발생시 transaction 처리 | 롤백하지 않은 | 롤백 함 |
대표 예외 | RuntimeException을 제외한 모든 예외 ex) SqlException, |
runtime에 발생하는 예외 RuntimeExceoption 하위의 모든 예외 널포인터익셉션 IndexOutOfBoundExcepiton |
P393 필요 없는 검사 예외 사용은 피하라
- 꼭 필요한 곳에서 사용하면 프로그램의 안전성을 높여주지만, 남용하면 쓰레기(직역…) 가 된다. Api 호출시 예외 상황에서 복수할 방법이 없다면 비검사 예외를 던지자.