어느 것이 더 정확합니까? Kirk의 의견에서 알 수 있듯이 : 그것은 달려 있습니다. 때로는 null
이 논리적 인 의미를 가지며, 기본값이 적당하지 않은 경우 예외가 더 적합한 경우가 있습니다. 내가하려고하는 한 가지는 "GetCurrentItem
을 논리적 실패 또는 안전한 것으로 부르는 것입니까?"라고 생각하는 것입니다.
GetCurrentItem
이없는 경우 전화를 걸지 않으면 예외를 throw하는 것이 올바른 과정입니다. 예를 들어 컬렉션에 HasCurrent
또는 IsEmpty
속성이 있고 누군가가 GetCurrentItem
을 호출하기 전에 결과를 조사 할 수있는 경우 "더 잘 알고 있어야합니다." 그러나 현재 항목이 null
이라면 클래스를 사용하는 올바른 논리적 인 방법입니다. 그런 다음 꼭 그런 식으로 디자인하십시오. 어느 쪽이든, 나는 사용자가 예상 된 동작을 알 수 있도록 코드 주석의 동작을 문서화합니다.
나는 이것을 말할 것이다. ArgumentOutOfRange
예외가 발생하면 구현 세부 사항이 흐려질 수 있습니다. 즉,이 클래스의 사용자가 내부 구조가 배열 또는 List<T>
이라는 것을 모르는 경우 해당 예외를 제거하지 말고 catch 한 다음 랩하고 더 의미있는 것을 내 보냅니다 (사용자 정의 또는 이와 비슷한 InvalidOperationException
). 그들은 정말 직접 인수를 전달하지 않는 때문에
, 그들은 ArgumentOutOfRange
예외가
? (대답 : 의존한다) –