[Clean Code] Chapter 7: Error Handling

DAY7 : Chapter7 Error Handling

오늘읽은 범위: ~ 7장. 오류처리

  • 오류 Log코드보다 예외를 던지는 편이 낫다

책에서 기억하고 싶은 내용

뭔가 잘못되면 바로 잡을 책임은 바로 우리 프로그래머에게 있다

  • try-catch-finally 문 부터 먼저 사용하라
  • Provide Context with Exceptions
    • Use informative error messages and relativant exception parameters
  • Define Exception Classes in Terms of a Caller’s Needs
    • How they are caught?
  • Define the normal flow
    • Cleanly separate business logic from error handling
  • Don’t Return Null
  • Don’t Pass Null
    • NULL 을 반환하거나 전달하지 말자
    • NullException처리를 고려하기 전에 NULL값은 그냥 전달하지도 반환하지도말자

소감

  • trace 를 남기고 logging으로 abnormal 처리하는게 익숙했는데 앞으로 코드를 구현할때 Exception 처리하는 것을 우선적으로 고려해야겠다.

궁금한 점

  • Does C++ support ‘finally’ blocks? (And what’s this ‘RAII’ I keep hearing about?)
    • No, C++ does not support ‘finally’ blocks.
  • what is finally block?
    • JAVA 예외처리
    • try{} 구문을 실행 중에 예외가 발생하면 그 지점에서 실행을 중지하고 catch{} 구문이 실행된다.
    • catch() 메서드 인자로 발생하는 예외 클래스를 인자를 주면 된다.
    • finally{} 는 예외가 발생하든 안하든 반드시 실행되어야하는 작업이 있을 시 사용하는데 생략해도 된다.
      try { /** 
      * 정상이라면 이 코드는 아무런 문제없이 블록의 시작부터 끝까지 실행된다. 
      * 하지만 경우에 따라 예외가 발생할 수 있다. 
      * 예외는 throw 문에 의해 직접적으로 발생할 수도 있고, 
      * 또는 예외를 발생시키는 메서드의 호출에 의해 발생할 수도 있다. */ 
      } 
      catch (e) { /** 
      * 이 블록 내부의 문장들은 오직 try 블록에서 예외가 발생할 경우에만 실행된다. 
      * 이 문장들에선 지역 변수 e를 사용하여 Error 객체 또는 앞에서 던진 다른 값을 참조할 수 있다. 
      * 이 블록에서는 어떻게든 그 예외를 처리할 수도 있고, 
      * 그냥 아무것도 하지 않고 예외를 무시할 수도 있고, 
      * 아니면 throw 를 사용해서 예외를 다시 발생시킬 수도 있다. */ 
      } 
      finally { /** 
      * 이 블록에는 try 블록에서 일어난 일에 관계없이 무조건 실행될 코드가 위치한다. 
      * 이 코드는 try 블록이 어떻게든 종료되면 실행된다. 
      * try 블록이 종료되는 상황은 다음과 같다. 
      * 1) 정상적으로 블록의 끝에 도달했을 때 
      * 2) break, continue 또는 return 문에 의해서 
      * 3) 예외가 발생했지만 catch 절에서 처리했을 때 
      * 4) 예외가 발생했고 그것이 잡히지 않은 채 퍼져나갈 때 */
      }
    

#노마드코더
#북클럽
#노개북