SummaryBook/[자바 코딩의 기술]

[Chap 5] 우선정리부터 문제 발생에 대비하기

seung_soos 2023. 6. 4. 18:53
  • 빠른 실패
    1. if문 사용시 빠른실패를 통한 코드의 가독성을 높이자.
    2. Depth를 줄일 수 있다.
    3. 모든 검증 조건을 다시 상기 할 필요가 없어진다.
  • 항상 가장 구체적인 예외 잡기
    1. 예외처리시 일반적인 타입을 잡으면 잡아선 안될 오류까지 잡힐 위험이 있다.
    2. try-catch 사용
      • ex) Exception 대신 가장 구체적인 예외를 잡는다.
    3. 가장 구체적인 예외를 잡기 위해 여러 예외를 잡아야 할 수도 있다.
    4. catch 블록을 하나가 아닌 여러개 작성하여 코드는 길지만, 버그가 많은 짧은 코드보다 좋다.
  • 메시지로 원인 설명
    • 메시지 작성시 자세한 정보로 예외의 근본적인 원인을 빠르게 추적 가능하다.
  • 원인 사슬 깨지 않기
  • 변수로 원인 노출
    1. 예외는 단순한 클래스가 아니라 필드, 메서드, 생성자를 가질 수 있느 클래스이다.
    2. 예외의 중복시 맞춤형 예외클래스(Util)를 만들어 사용하자.
  • 타입 변환 전에 항상 타입 검증하기
    • 런타임에 동적 객체 타입을 처리해야 할 경우 타입변경(class) 시 다른 객체가 삽입될 경우 ClassCastException을 일으킨다.
    • 변환 전 타입 검증을 하자 
      1. 결과를 지역 변수(example)에 저장한다.
        -> Object  example =  메서드 결과 저장
      2. instanceof 연산자로 타입을 검증한다.
        -> if(example instanceof 클래스타입)
      3. 참일 경우만  if문이 실행되기에 ClassCastException이 발생하지 않는다.
  • 항상 자원 닫기
    1. 프로그램이 종료될때까지 해제되지 않는 현상을 '자원 누출' 이라 한다.
    2. close 사용시 예외가 발생할 상황도 예측하여 try-catch-finally 사용으로 예외 발생 후 에도 종료되도로 사용하자. 
  • 항상 다수 자원 닫기
    1. 자원을 직접 관리하기 보다, try-with-resources 사용하자.
  • 빈 catch블록 설명하기
    1. 예외처리의 여러가지 방식중 빈 catch 블록을 보면, 누구나 잘못되었다 생각할 것이다.
    2. 해결방법으로는 변수명을 구체적으로 명시해주고, 주석을 통한 설명을 작성하자.