Ham*_*med 2 c# exception conditional-statements
catch使用条件表达式重写以下块中的代码的正确方法是什么?如果支持的话!?
try
{
return await _client.GetStreamAsync(_uri);
}
catch
{
if (IsConnected)
throw;
else
throw new IOException();
}
Run Code Online (Sandbox Code Playgroud)
C# 编译器不喜欢以下内容
IsConnected ? throw : new IOException();
Run Code Online (Sandbox Code Playgroud)
请注意,重新抛出捕获的异常(如下所示)违反了CA2200
try
{
return await _client.GetStreamAsync(_uri);
}
catch (Exception ex)
{
throw IsConnected ? throw ex : new IOException();
}
Run Code Online (Sandbox Code Playgroud)
你的第一个例子很好。throw;将重新抛出异常,使堆栈跟踪保持不变。作为替代方案,我建议在以下情况下有条件地捕获异常IsConnected == false:
catch when (IsConnected)
{
throw new IOException();
}
Run Code Online (Sandbox Code Playgroud)
when您可以在文档中阅读有关该关键字的更多信息。
| 归档时间: |
|
| 查看次数: |
377 次 |
| 最近记录: |