Как избежать исключения NullReferenceException - PullRequest
1 голос
/ 09 апреля 2009
 if (alMethSign[z].ToString().Contains(aClass.Namespace))

Здесь я загружаю exe или dll и проверяю их пространство имен. В некоторых библиотеках нет пространства имен, поэтому aclass.namespace отсутствует и выбрасывает NullReferenceException.

Мне нужно просто избегать этого, и оно должно продолжаться с остальной частью кода. Если я использую try-catch, он выполняет часть catch; Я хочу, чтобы продолжить с остальным кодом.

Ответы [ 4 ]

13 голосов
/ 09 апреля 2009

Не поймите исключение. Вместо этого защищайтесь от этого:

string nmspace = aClass.Namespace;

if (nmspace != null && alMethSign[z].ToString().Contains(nmspace))
{
    ...
}
4 голосов
/ 09 апреля 2009

Добавьте тест для нуля в операторе if.

if(aClass.NameSpace != null && alMethSign[z].ToString().Contains(aClass.Namespace))
3 голосов
/ 09 апреля 2009

Является ли aClass Type экземпляром? Если это так - просто проверьте его на ноль:

if (aClass != null && alMethSign[z].ToString().Contains(aClass.Namespace))
0 голосов
/ 09 апреля 2009

Или используйте метод расширения, который проверяет наличие любых нулей и возвращает либо пустую строку, либо строковое значение объекта:

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

}
...