if (alMethSign[z].ToString().Contains(aClass.Namespace))
在这里,我加载一个exe或dll并检查它的命名空间。在某些dll中,没有名称空间,因此aclass.namespace
不存在而且它正在抛出NullReferenceException
。
我必须避免它,它应该继续使用其余的代码。如果我使用try-catch,它会执行catch部分;我希望它继续使用其余的代码。
答案 0 :(得分:13)
不要抓住异常。相反,防御它:
string nmspace = aClass.Namespace;
if (nmspace != null && alMethSign[z].ToString().Contains(nmspace))
{
...
}
答案 1 :(得分:4)
在if语句中添加null测试。
if(aClass.NameSpace != null && alMethSign[z].ToString().Contains(aClass.Namespace))
答案 2 :(得分:3)
aClass
是Type
个实例吗?如果是这样 - 只需将其检查为null:
if (aClass != null && alMethSign[z].ToString().Contains(aClass.Namespace))
答案 3 :(得分:0)
或使用扩展方法检查任何空值,并返回空字符串或对象的字符串值:
public static string ToSafeString(this object o)
{
return o == null ? string.Empty : o.ToString();
}