DAY13

  • 오늘 읽은 범위 : 오류 처리 ~p136

책에서 기억하고 싶은 내용을 써보세요

  • 깨끗한 코드와 오류 처리는 확실히 연관성이 있다
    • 상당수 코드 기반은 전적으로 오류 처리 코드에 좌우된다.-여기저기 흩어진 오류 처리 코드 때문에 실제 코드가 하는 일을 파악하기가 거의 불가능하다는 의미다-
    • 오류 처리는 중요하지만 오류 처리 코드로 인해 프로그램 논리를 이해하기 어려워진다면 깨끗한 코드라 부르기 어렵다
  • 오류코드를 반환하기 보다는 예외처리를 해라!1
    • 오류코드를 반환하면 호출자 코드가 복잡해진다. 예외처리를 사용한다면 보기도 좋아지고 코드품질도 나아진다.
  • 예외가 발생할 코드에는 try-catch-finally 문으로 시작하는게 좋다.
    • try 블록에서 무슨 일이 생기던지 호출자가 기대하는 상태를 정의하기 쉬워진다.2
    • 예외를 일으키는 테스트케이스를 작성 후 그 테스트를 통과하게 코드를 작성하는 방법을 사용하라
  • 미확인예외를 사용하라
    • 확인예외는 OCP를 위반한다
      • 특정 메서드에서 확인된 예외를 던졌는데 catch문이 세단계(메서드) 위에 있다면 상위 단계 메서드 모두를 고쳐야 한다.
      • 일반적인 어플리케이션은 의존성이 확인된 예외가 가져오는 이익보다 크다
  • 예외에 의미를 제공하라-예외를 던질 때는 전후 상황을 충분이 덧붙히자-오류가 발생한 원인과 위치를 찾기 쉬워진다-
  • 호출자를 고려해 예외 클래스를 정의하라-애플리케이션에서 오류를 정의할 때 프로그래머에게 가장 중요한 관심사는 오류를 잡아내는 방법이 되어야 한다.3

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

  1. 코드를 짤 때 오류처리를 하면 코드가 더러워진다고 생각을 했습니다. 그래서 웬만하면 클래스에서 생길 예외는 확인된 예외로 던지는 습관을 많이 들였습니다. 하지만 이 확인된 예외는 OCP를 위반한다는 것을 알게되었으며, try-catch-finally문을을 가지고도 깨끗한 코드를 짤 수 있다는 것을 이번장에서 배웠습니다.
  2. 오류에 있어서도 추상화와 중복을 고려한다는 점이 정말 흥미로웠습니다. 특히 135쪽부터 시작되는 코드에서 어떻게 하면 코드에서 나오는 다양한 예외들을 하나의 예외로 묶어서 처리하고 하나의 추상화로 정의하여 호출자에게 보여주는지를 보며, 우리는 저자다라는 이 책의 첫부분이 어떤 의미인지 되새기는 장이 되었습니다.

궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요

  • -

세줄 요약

  • 오류처리는 중요하다! -하지만 프로그램 논리를 이해하기 어렵게 만드는 오류 처리 코드는 깨끗한 코드라 부를 수 없다-
  • 예외가 발생할 코드에서는 try-catch-finally문 부터 작성해라
  • 호출자를 고려해 예외를 생성하라-예외가 어디서 생성됐는지 뒤져봐야 한다면 좋은 오류 처리가 아니다!

주석

  1. p130~131 목록7-1, 7-2 참조 

  2. p132의 구현예제 참조 

  3. p135~137의 구현예제 참조