C# 异常不工作

C# 异常不工作,c#,C#,ArgumentException可能不起作用,有什么原因吗 当我们将解决方案迁移到.NET4.0时,我们无法正确使用ArgumentException string nodata = '--NO DATA--' try { InstanceID = Microsoft.XLANGs.Core.Service.RootService.InstanceId.ToString(); } catch (ArgumentException) { InstanceID = nodata;

ArgumentException可能不起作用,有什么原因吗

当我们将解决方案迁移到.NET4.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;
}
我们通常遇到的错误是

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


您所做的问题是,在代码中,您只捕获了
ArgumentException
s,而在捕获所有异常之前,所有异常都源自
Exception
,因此它符合旧的
catch
标准

如果只想捕获得到的特定异常(
NullReference
),则需要捕获正确的异常(而不是
ArgumentException
)。更改如下:

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

catch (Exception)
{
    InstanceID = nodata;
}

阅读以更好地理解捕获特定类型的异常

检查异常类型。它似乎是NullReference。
Microsoft.XLANGs.Core.Service.RootService.InstanceId.ToString()