【发布时间】:2022-01-23 08:58:23
【问题描述】:
使用条件表达式重写以下catch 块中的代码的正确方法是什么?如果支持!?
try
{
return await _client.GetStreamAsync(_uri);
}
catch
{
if (IsConnected)
throw;
else
throw new IOException();
}
C#编译器不喜欢下面的
IsConnected ? throw : new IOException();
请注意,重新抛出捕获的异常,如下所示,违反了CA2200
try
{
return await _client.GetStreamAsync(_uri);
}
catch (Exception ex)
{
throw IsConnected ? throw ex : new IOException();
}
【问题讨论】:
-
您是否收到有关
if版本的错误消息?我很确定三元是不合法的 C#;三元是表达式,而不是语句 -
您是指第一个示例中的
if吗?如果是这样,不,这很好。 -
@Flydog57
throw someException在三进制中是合法的,但throw不是,这是来自 C#7 stackoverflow.com/questions/42209135/…
标签: c# exception conditional-statements