所以这段代码会触发CA1031
.
try
{
// logic
}
catch (FileNotFoundException) // exception type
{
// handle error
}
虽然这个没有:
try
{
// logic
}
catch (FileNotFoundException ex) // exception var
{
// handle error
}
因为异常类型是有意义的,所以我不需要ex
在第一个例子中。但它不是一般的异常类型。它不是IOException
or Exception
。那么为什么它仍然会触发CA1031
?
那么两者之间有区别吗catch(FileNotFoundException)
and catch(FileNotFoundException ex)
除了我没有捕获异常信息之外?
所以这段代码会触发CA1031
try
{
// logic
}
catch (FileNotFoundException) // exception type
{
// handle error
}
发生这种情况是因为“一般异常,例如System.Exception
or System.SystemException
被 catch 语句捕获,或者使用了通用的 catch 子句,例如 catch()”。要修复它,请分配它并处理错误,或者重新抛出通用异常以便进一步处理。
经过进一步调查,似乎是这样used成为bug,你可以看到更多here https://github.com/dotnet/roslyn-analyzers/pull/2519/commits/37cb4d6a9867be2a6eb4d1cd7f94a9b58d980216;那是个Roslyn
问题为FxCop
.
To Fix:只需更新最新的 FxCop 分析器包即可。
NuGet:
Install-Package Microsoft.CodeAnalysis.FxCopAnalyzers -Version 2.9.7
参考:CA1031 https://learn.microsoft.com/en-us/visualstudio/code-quality/ca1031?view=vs-2019
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)