2012-04-17 4 views
0

私はソースコードを持っていない他の人が書いたクラスを持っています。それにはUMという属性があり、その文字列は_UMです。場合によっては_UMNothingです。私はUMNothingであると期待していますが、(クイックウォッチを使用して)検査すると、NullReferenceExceptionとして表示されるプロパティが表示されます。 Nothingのテストをしようとすると、メインコードにNullReferenceExceptionがスローされます。この状態をどのように把握すれば、正しく処理できるのでしょうか?NullReferenceException(何もテストしていない)のテスト

If Foo.UM Is Nothing Then 
    DoSomething() 
End If 

... NullReferenceExceptionをスローします。

+2

'Foo'が' Nothing'であるため、例外がスローされる可能性があります。 – Oded

+0

Fooは何もありません。私が見ることができる他の特性。 – cjbarth

+0

try ... catch NullReferenceException ... –

答えて

1

プロパティは、単に_UMフィールドを返すだけではありません。おそらくそれを何らかの形で使用しており、nullかもしれないと考慮していません。

Dim obj = Nothing 
Try 
    obj = Foo.UM 
Catch ex As NullReferenceException 
End Try 
If obj Is Nothing Then 
    DoSomething() 
End If 
+0

私は、プロパティがおそらく '_UM'を返す以外に何かをすることに同意しますが、特に気にしません。私はただ試して行動するだけです。どのようにそれを行うにはどのような考え? – cjbarth

+0

例外を処理するのにかなりのオーバヘッドがあるので、私はそれを避けることを望んでいました。このクラスは他の地域ではかなり悲しいです。私は驚いてはいけません。あなたの提案をありがとう。 – cjbarth

+0

たとえば、外部のdllをReflectorで逆コンパイルすると、そのプロパティで実際に何が起こっているのかを見ることができます。 – Magnus

関連する問題