c# - 如何简化 try-catch 的 return 语句

标签 c# exception code-duplication

<分区>

如何简化以下代码:

try
{
    var metadata = GetMetadata();
    return metadata ?? _provider.GetLatestMetadata(guid);
}
catch (AuthenticationException)
{
    return _provider.GetLatestMetadata(guid);
}
catch (HttpUnauthorizedRequestException)
{
    return _provider.GetLatestMetadata(guid);
}
catch (WebException)
{
    return _provider.GetLatestMetadata(guid);
}
catch (VcenterException)
{
    return _provider.GetLatestMetadata(guid);
}

我想避免代码重复。

这可能吗?

最佳答案

如果不想包罗万象,确实需要避免重复代码,可以使用异常过滤器捕获特定的异常:

try
{
    var metadata = GetMetadata();
    return metadata ?? _provider.GetLatestMetadata(guid);
}
catch (Exception ex) when ( ex is AuthenticationException
                            || ex is HttpUnauthorizedRequestException
                            || ex is WebException
                            || ex is VcenterException
                          )
{
    return _provider.GetLatestMetadata(guid);
}

关于c# - 如何简化 try-catch 的 return 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34062801/

相关文章:

c# - 在 try block 中尝试 catch - 异常应该调用相同的函数

c# - 特定构建配置的不同配置字符串

c# - 可以(错误地)使用 Exception.HelpLink 来识别 Exception 对象吗?

java - AnimationTimer - 动画处理期间不允许使用 showAndWait

c# - 将事件写入事件日志期间出现 WCF 异常

发生时复制每一行data.frame

c# - 将新实体插入到具有标识主键的上下文中

c# - 从 Json 数组中删除属性

关于原始数组的 Java 泛型方法代码重复问题

c++ - 我有这两个相似的类(class)。您将使用什么设计来分解代码?