-
반응형
예외를 활용해 코드에 제한을 걸어라
- 확실하게 어떤 형태로 동작해야하는 코드가 있다면 예외를 활용해 제한을 걸자
- 제한을 걸면 문서를 읽지 않은 개발자도 문제를 확인할 수 있다.
- 문제가 있을 경우 함수가 예상하지 못한 동작을 하지 않고 예외를 throw 한다. 예상하지 못한 동작을 하는건 예외를 throw하는 것보다 굉장히 위험하며, 상태를 관리하는 것이 굉장히 힘들다.
- Argument
- 일반적으로 제한 걸때는 argument를 사용한다.
- require함수로 제한을 확인하고 제한을 만족하지 못할 경우 예외를 throw 한다.
- require 함수는 조건을 만족하지 못할 때 무조건 IllegalArgument Exception을 발생시키므로 제한을 무시할 수 없다.
- check
- check 함수는 require과 비슷하지만 지정된 예측을 만족하지 못할 때 IllegalStateException을 throw 한다.
- 상태가 올바른지 확인할 때 사용한다.
- 사용자가 코드를 제대로 사용할거라고 믿고 있는 것 보다는 항상 문제 상황을 예측하고, 문제 상황에 예외를 throw하는 것이 좋다.
- assert
- 단위테스트는 구현의 정확성을 확인하는 가장 기본적인 방법이다.
- assert함수는 프로덕션 환경에서는 오류가 발생하지 않고 테스트 할 때만 활성화 되므로 오류가 발생해도 사용자가 알아차릴 수 없다.
- 이 코드가 정말 심각한 오류라면 check 함수를 사용하는게 좋다.
결과 부족이 발생할 경우 Null과 Failure를 사용해라
- 함수가 원하는 결과를 만들어 낼 수 없을 때가 있다.
- 이럴 때 null 또는 Failure를 리턴하거나 예외를 throw 한다.
- 여기서 예외를 throw 하는 방법은 좋지 않다. 예외는 정보를 전달하는 방법으로 사용해서는 안된다. 잘못된 특별한 상황을 나타내야 한다.
- 충분히 예측할 수 있는 범위의 오류는 null 과 failure를 사용하고, 예측하기 어려운 예외적인 범위의 오류는 예외를 throw 해서 처리하는게 좋다.
반응형'개발 > Android' 카테고리의 다른 글
[Kotlin] 안드로이드스튜디오 BroadcastReceiver (0) 2023.02.26 [Kotlin] 안드로이드스튜디오 AlramManager 기능 및 사용방법 (0) 2023.02.25 이펙티브 코틀린 : 변수의 스코프를 최소화하라 (0) 2023.02.18 이펙티브 코틀린 : 1부 좋은 코드 (0) 2023.02.06 [Android] 카카오 로그인을 구현하면서 경험한 시행착오 (0) 2023.01.29 댓글