마이클 패더스(Michael Feathers)
<aside> 💡 뭔가 잘못될 가능성은 늘 존재한다. 뭔가 잘못되면 바로 잡을 책임은 바로 우리 프로그래머에게 있다.
</aside>
오류 처리는 중요하다. 하지만 오류 처리 코드로 인해 프로그램 논리를 이해하기 어려워진다면 깨끗한 코드라 부르기 어렵다.
오류가 발생하면 예외를 던지는 편이 낫다. 그러면 호출자 코드가 더 깔끔해진다. 논리가 오류 처리 코드와 뒤섞이지 않으니까.
예외가 발생할 코드를 짤 때는 try-catch-finally 문으로 시작하는 편이 낫다.
예를 들어 파일을 열어 직렬화 된 객체 몇 개를 읽어 들이는 코드를 작성한다고 하자.
파일이 없으면 예외를 던지는지 확인하는 단위 테스트를 작성한 후 코드가 예외를 던져서 테스트에 성공하면 이 시점에서 리팩터링이 가능하다. try-catch 구조로 범위를 정의했으므로 TDD를 사용해 필요한 나머지 논리를 추가할 수 있다.
이처럼 강제로 예외를 일으키는 테스트 케이스를 작성한 후 테스트를 통과하게 코드를 작성하는 방법을 권장한다. 그러면 자연스럽게 try 블록의 트랜잭션 범위부터 구현하게 되므로 범위 내에서 트랜잭션 본질을 유지하기 쉽다.