개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
깨끗한 코드는 읽기도 좋아야 하지만 안정성도 높아야 한다.
예외처리가 반드시 필요하지 않다면 예외처리를 제거하여 간결하게 만들어야 한다.
오류처리를 프로그램 논리와 분리하면 독립적인 추론이 가능해지며 코드 유지보수성도 높아진다.
TIL (Today I Learned) 날짜
2022. 05. 05
오늘 읽은 범위
7장. 예외 처리
책에서 기억하고 싶은 내용을 써보세요.
오류코드보다는 예외를 사용해라.
Try-Catch-Finally 문부터 작성하라. 먼저 강제로 예외를 일으키는 테스트 케이스를 작성한 후 테스트를 통과하게 코드를 작성하는 방법을 권장한다.
미확인unchecked 예외를 사용하라. throws 경로에 위치하 는 모든 함수가 최하위 함수에서 던지는 예외를 알아야 하므로 캡슐화가 깨진다. 오류를 원거리에서 처리하기 위해 예외를 사용한다는 사실을 감안한다면 이처럼 확인된 예외가 캡슐화를 깨버리는 현상은 참으로 유감스럽다.
예외를 던질 때는 전후 상황을 충분히 덧붙인다. 그러면 오류가 발생한 원인과 위치를 찾기가 쉬워진다.
메서드에서 null을 반환하고픈 유혹이 든다면 그 대신 예 외를 던지거나 특수 사례 객체를 반환한다. 다행스럽게 자바에는 Collections.emptyList()가 있어 미리 정의된 읽기 전용 리 스트를 반환한다. 우리 목적에 적합한 리스트다.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
메서드가 null을 반환할 경우 항상 null을 체크해주는 방식을 사용했었는데 아예 메서드에서 null일 경우 빈 배열을 반환해주는 식으로 필요없는 코드를 줄이는 방법이 있었다 라는 걸 깨닫게 되었다.
또한 메서드의 인자로 null를 전달하지 않을 방법, 이것 또한 고민해봐야겠다.
반드시 예외처리가 필요한 것이 아니라면 그 부분을 제외하고 간결하게 만드는 예시가 가장 인상깊었다.
깨끗한 코드도 중요하지만 오류가 나지 않은 안전한 코드를 써야 한다가 이 장의 핵심인 것 같다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
unchecked exception?
RuntimeException의 하위 클래스들을 의미. 이것은 체크 예외와는 달리 에러 처리를 강제하지 않는다. 말 그대로 실행 중에(runtime)
발생할 수 있는 예외를 의미.
임의의 예외 클래스를 만들어 예외 처리를 하는 경우 try-catch로 묶어줄 필요가 있을 경우에만 Exception 클래스를 확장하고,
일반적으로 실행시 예외를 처리할 수 있는 경우에는 RuntimeException
클래스를 확장해 Unchecked Exception
을 사용하는 것이 좋다.
참조