이 글의 개념 및 코드들은 책을 읽으며 정리한 내용을 바탕으로 작성하였습니다.
오류 코드보다 예외를 사용하라 !
-
명령 함수에서 오류 코드를 반환하는 방식은
-
명령 / 조회 분리 규칙을
-
미묘하게 위반한다.
- if 문에서 명령을 표현식으로 사용하기 쉽기 때문이다.
if (deletePage(page) == OK)
-
위 코드는 여러 단계로 중첩되는 코드를 야기한다.
-
오류 코드를 반환하면
-
호출자는 오류 코드를 곧바로 처리해야한다는 문제에 부딪힌다.
if (deletePage(page) == OK) {
if (registry.deleteReference(page.name) == OK) {
if (configKeys.deleteKey(page.name.makeKey()) == OK) {
logger.log("page deleted");
} else {
logger.log("configKey nott deleted");
}
} else {
logger.log("deleteReference from registry failed");
}
} else {
logger.log("delete failed");
return E_ERROR;
}
-
오류 코드 대신
-
예외를 사용하면
-
오류 처리 코드가
-
원래 코드에서 분리되어 코드가 깔끔해진다.
try {
deletePage(page);
registry.deleteReference(page.name);
configKyes.deleteKey(page.name.makeKey());
} catch (Exception e) {
logger.log(e.getMessage());
}