개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
오류 코드보다 예외를 사용하라.
null을 반환하기 마라
null을 전달하지 마라
TIL (Today I Learned) 날짜
2022. 03. 05
오늘 읽은 범위
7장. 오류 처리
책에서 기억하고 싶은 내용을 써보세요.
오류가 발생하면 예외를 던지는 편이 낫다. 그러면 호출자 코드가 더 깔끔해진다. 논리와 오류 처리 코드와 뒤섞이지 않으니까. (p131)
먼저 강제로 예외를 일으키는 테스트 케이스를 작성한 후 테스트를 통과하게 코드를 작성하는 방법을 권장한다. 그러면 자연스럽게 try 블록의 트랜잭션 범위부터 구현하게 되므로 범위 내에서 트랜잭션 본질을 유지하게 쉬워진다. (p133)
애플리케이션이 로깅 기능을 사용한다면 catch 블록에서 오류를 기록하도록 충분한 정보를 넘겨준다. (p135)
외부 API를 감싸면 외부 라이브러리와 프로그램 사이에서 의존성이 크게 줄어든다. 나중에 다른 라이브러리로 갈아타도 비용이 적다. (p137)
흔히 예외 클래스가 하나만 있어도 충분한 코드가 많다. 예외 클래스에 포함된 정보로 오류를 구분해도 괜찮은 경우가 그렇다. (p137)
이를 특수 사례 패턴이라 부른다. 클래스를 만들거나 객체를 조작해 특수 사례를 처리하는 방식이다. 그러면 클라이언트 코드가 예외적인 상황을 처리할 필요가 없어진다. 클래스나 객체가 예외적인 상황을 캡슐화해서 처리하므로. (p138)
null을 반환하는 코드는 일거리를 늘릴 뿐만 아니라 호출자에게 문제를 떠넘긴다. (p139)
메서드에서 null을 반환하는 방식도 나쁘지만 메서드로 null을 전달하는 방식은 더 나쁘다. 정상적인 인수로 null을 기대하는 API가 아니라면 메서드로 null을 전달하는 코드는 최대한 피한다. (p140)
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
null exception은 당연히 해야할 null 체크를 놓친거라고 생각했는데 아예 체크를 안하도록 개발했어야 했다니
exception은 발생시키기 부담스러워서 항상 null 체크하고 분기탔었는데... exception이 발생해서는 안되는 구문이라는 선입견을 깨야겠다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
자바의 확인된 예외가 뭐지
assert문은 어떻게 쓰는걸까? null이 들어오면 어떻게 되는걸까?
오늘 읽은 다른사람의 TIL
codingcat님의 TIL (https://nomadcoders.co/community/thread/3286)