Effective Java 10장 예외 - 2

Effective Java 3/E

해당 블로그는 Effective 3을 읽고 공부한 내용을 정리한 블로그입니다.

P396 표준 예외를 사용하라

  • Exception, RuntimeException, Throwable, error는 직접 재사용하지 말자. 해당 클래스들은 추상 클래스라 생각하자

P399 추상화 수준에 맞는 예외를 던지라

  • 무작정 예외를 전파하는 것보다 예외 번역이 우수한 방법이지만, 그렇다고 남용해서는 안된다.

P402 메서드가 던지는 모든 예외를 문서화하라

  • 검사 예외는 항상 별도로 선언하고, 각 예외가 발생하는 상황을 자바독의 @throws 태그를 사용하여 정확히 문서화하자.
  • 비검사 예외는 메서드 선언의 throws 목록에 넣지말자.

P404 예외의 상세 메시지에 실패 관련 정보를 담으라

예외 처리 중요 키워드

중요 키워드

  • try
  • catch
  • finally
  • throw

1. try

  • 코드를 작성하며 아마 Exception이 발생 할 곳을 block 할 때
  • try-block은 반드시 catch-block 또는 finally-block이 따라온다
1
2
3
4
5
6
7
8
try {

//에러가 발생 할수 있는 코드 블록
//요즘은 ide에서 알아서 경고를 내줌
}catch (e: Exception){


}

2. catch

  • try block에서 발생한 에러를 핸들링
1
2
3
4
5
6
7
try {

}catch (e: Exception){
//try block에서 발생한 에러를 핸들링
//또는 발생한 예외를 전환해서 throw

}

3. finally

  • try-catch 블록과 연관지어져 있다.
  • connection(database, socket, filestream) 을 할때 커넥션을 닫을 때
1
2
3
4
5
6
7
8
9
10
11
12
try {

//에러가 발생 할수 있는 코드 블록
//요즘은 ide에서 알아서 경고를 내줌
}catch (e: Exception){
//try block에서 발생한 에러를 핸들링
//또는 발생한 예외를 전환해서 throw

}finally {
//try-catch 블록이 끝난 후 진행

}

4. throw

  • 말 그대로 예외를 던진다

정말 말이 안되지만 아래와 같은 코드가 있다 가정해보자

1
2
3
4
5
6
7
8
9
10
try{

println("사장님 마표대교는 막혔는데요?")
throw NullPointerException("마표대교가 막힘")

}catch (e : Exception){

// 1. 한강에 다리가 하나냐? 한남대교로 가 <--
// 2. 또는 정의한 예외를 던짐
}