为什么ArgumentException可能不起作用?
当我们将解决方案移至.Net 4.0时,我们无法正确使用ArgumentException。
string nodata = '--NO DATA--'
try
{
InstanceID = Microsoft.XLANGs.Core.Service.RootService.InstanceId.ToString();
}
catch (ArgumentException)
{
InstanceID = nodata;
}
当我们使用Exception类而不是ArgumentException时,我们可以将变量nodata传递给InstanceID。
catch (Exception e)
{
InstanceID = nodata;
}
时我们经常遇到的错误
对象引用未设置为实例对象。
答案 0 :(得分:0)
您正在做的问题是,在您的代码中,您只捕获ArgumentException
s而在捕获所有异常之前 - 所有异常都来自Exception
,因此它适合旧{{1}标准。
如果你想只捕获你得到的特定异常(catch
),那么你需要捕获正确的异常(不是NullReference
)。改变如下:
ArgumentException
但如果你没有catch (NullReferenceException)
{
InstanceID = nodata;
}
的特定行为,那么我就保留它:
NullReferenceException
阅读MSDN以更好地了解捕捉特定类型的例外情况