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