C# 异常不工作
ArgumentException可能不起作用,有什么原因吗 当我们将解决方案迁移到.NET4.0时,我们无法正确使用ArgumentExceptionC# 异常不工作,c#,C#,ArgumentException可能不起作用,有什么原因吗 当我们将解决方案迁移到.NET4.0时,我们无法正确使用ArgumentException string nodata = '--NO DATA--' try { InstanceID = Microsoft.XLANGs.Core.Service.RootService.InstanceId.ToString(); } catch (ArgumentException) { InstanceID = nodata;
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()德米特定律连续四次被打破。这里有4种可能的情况可以在nullpointer异常中运行。最好在这之前检查一下。