ArgumentException无法正常工作

时间:2016-08-24 07:10:08

标签: c#

为什么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;
}

时我们经常遇到的错误
  

对象引用未设置为实例对象。

1 个答案:

答案 0 :(得分:0)

您正在做的问题是,在您的代码中,您只捕获ArgumentException s而在捕获所有异常之前 - 所有异常都来自Exception,因此它适合旧{{1}标准。

如果你想只捕获你得到的特定异常(catch),那么你需要捕获正确的异常(不是NullReference)。改变如下:

ArgumentException

但如果你没有catch (NullReferenceException) { InstanceID = nodata; } 的特定行为,那么我就保留它:

NullReferenceException

阅读MSDN以更好地了解捕捉特定类型的例外情况