2009-04-09 5 views
1
if (alMethSign[z].ToString().Contains(aClass.Namespace)) 

여기에 exe 또는 dll을로드하고 네임 스페이스를 확인합니다. 일부 dll에는 네임 스페이스가 없기 때문에 aclass.namespace은 존재하지 않으며 NullReferenceException을 던집니다.NullReferenceException을 피하는 방법

필자는이를 피하고 나머지 코드를 계속 사용해야합니다. try-catch를 사용하면 catch 부분을 실행합니다. 나머지 코드를 계속 사용하길 바란다.

+0

거의'NullReferenceException'의 모든 경우가 동일합니다. 일부 힌트는 "[.NET의 NullReferenceException은 무엇입니까?] (http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net)"를 참조하십시오. –

답변

3

aClassType 예인가? 그렇다면 null을 확인하십시오.

if (aClass != null && alMethSign[z].ToString().Contains(aClass.Namespace)) 
13

예외를 포착하지 마십시오. 대신, 방어 :

string nmspace = aClass.Namespace; 

if (nmspace != null && alMethSign[z].ToString().Contains(nmspace)) 
{ 
    ... 
} 
4

if 문에 null 테스트를 추가하십시오.

if(aClass.NameSpace != null && alMethSign[z].ToString().Contains(aClass.Namespace)) 
0

또는 그 어떤 null을 확인하고 중 빈 문자열 또는 객체의 문자열 값을 반환에 확장 방법을 사용하십시오

public static string ToSafeString(this object o) 
{ 
return o == null ? string.Empty : o.ToString(); 

} 
관련 문제