2010-08-03 11 views
4

null 값을 기대하고 (getter 속성 내에서) 정의 된 값을 얻고 예외를 throw하려면 csharp에서이 작업을 수행하는 적절한 방법은 무엇입니까? 이 상황에서 이미 의미있는 정의가 있습니까?null 값을 기대할 때 예외가 발생합니까?

throw new 
    ArgumentException("Parameter was expected to be null, value was provided."); 

ArgumentOutOfRangeException도 작동 할 수 있지만, null가 아닌 대 잘 정의 된 범위보다는 널 (null)이있을 때 일반적으로 사용됩니다

+0

@Joe null 값에 의존하는 디자인은 잠재적 인 유지 관리 문제 일 수 있습니다. null을 반환 할 수있는 멤버를 새로 사용할 때마다이를 확인해야하기 때문입니다. 이것을 피하는 디자인을 갖는 것이 바람직합니다. –

+3

* out * 매개 변수로 설정하지 않은 이상 비정상적인 배열입니다 (그렇지 않으면 매개 변수를받는 것에 대해 걱정할 필요가 있습니까?). 그렇지 않은 경우 null로 설정하는 부작용은 무엇입니까? – slugster

+2

호기심에서 벗어나 왜 널 값을 요구하고 있는지 우리에게 말할 수 있습니까? – Hut8

답변

9

내 생각 일 것이다.

+0

+1 자신의 예외를 던지면 사용자가 볼 때 "사람이 읽을 수있는"오류를 제공 할 수 있습니다. 문맥 화 오류가 가장 좋은 방법입니다. – Achilles

3

나는 아마 내가 두 번 뭔가를 설정하려고의 맥락에서 같이 InvalidOperationException 사용 본 적이 ArgumentOutOfRangeException

0

사용할 수 있습니다. 예를 들어,

if(displayMessage != null) 
    throw new InvalidOperationException("The display message may not be set more than once."); 

displayMessage = myAwesomeMessage; 
관련 문제