EffectiveJava--예외

1842 단어

제57조: 이상 경우에만 이상 사용

try{
   int i = 0;
   while(true){
      range[i++].climb();
   }
}catch(ArrayIndexOutOfBoundsException e){

}

이상 방지는 위 코드에 사용됩니다.
  • 비정상적인 메커니즘의 설계는 비정상적인 상황에 사용하기 때문에 JVM의 실현이 이를 최적화하려고 시도하는 경우는 드물다
  • 코드를try-catch 코드 블록에 놓고 오히려 JVM을 조직하여 최적화시켰다
  • 위에서 이상한 순환 모델을 바탕으로 코드의 의도를 모호하게 할 뿐만 아니라 성능을 떨어뜨릴 뿐만 아니라 정상적인 작업을 보장할 수 없다.(관련 버그가 발생하면 이 모드는 조용히 효력을 상실합니다)
    그래서 이상은 이상 상황에서만 사용해야 한다. 그들은 영원히 정상적인 흐름 제어에 사용해서는 안 된다.

    제58조: 복구 가능한 경우 검사 이상, 프로그래밍 오류 사용 실행 시 이상


    java 언어 규범은 세 가지 버퍼링 가능한 구조를 제공합니다: - 검출된 이상 checked exception - 실행 시 이상run time exception - 오류 error
    이상이 발생하면 프로그램이 계속 실행되는 것은 해롭고 무익하며, 실행 시 이상을 사용해야 한다.

    제59조: 검사받은 이상을 불필요하게 사용하지 않도록 한다

  • 만약 정확한 API가 이런 이상 상황의 발생을 막을 수 없다면
  • 이상이 발생하면 프로그램은 즉시 유용한 행동을 취할 수 있어야 한다
  • 매우 이 두 조건이 모두 성립되지 않으면 더욱 적합하다

    제60조: 표준의 이상을 우선적으로 사용한다

    IllegalArgumentException: null       
    IllegalStateException:       ,       
    NullPointerException:    null        null
    IndexOutOfBoundsException:    
    ConcurrentModificationException:           ,            
    UnsupportedOperationException:          
    

    제61조: 추상적으로 상대적인 이상을 던진다


    이상 전의 를 합리적 으로 사용 하다

    제62조: 모든 방법이 던진 이상은 문서가 있어야 한다


    제63조: 세부 사항에 실패를 포착할 수 있는 정보를 포함한다


    제64조: 실패한 조작의 원자성을 확보하기 위해 노력한다


    일반적으로 실패한 방법 호출은 대상이 호출되기 전의 상태에 저장되어야 한다.
    조치: - 매개변수 유효성 우선 확인 - 프로세스 순서 조정 - 복구 코드 작성 - 임시 복제

    제 65 조: 이상 을 소홀히 하지 마라

  • 비어 있는catch 블록은 이상으로 하여금 제 목적을 달성하지 못하게 할 수 있다.
  • 주석이 있어야 하는데 왜 무시할 수 있는지
  • 좋은 웹페이지 즐겨찾기