• 이펙티브 코틀린 : 예외를 활용해 코드에 제한을 걸어라

    2023. 2. 19.

    by. 하루플스토리

    반응형

    예외를 활용해 코드에 제한을 걸어라

    • 확실하게 어떤 형태로 동작해야하는 코드가 있다면 예외를 활용해 제한을 걸자
    • 제한을 걸면 문서를 읽지 않은 개발자도 문제를 확인할 수 있다.
    • 문제가 있을 경우 함수가 예상하지 못한 동작을 하지 않고 예외를 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 해서 처리하는게 좋다.
    반응형

    댓글