c# - try catch 语句的位置

标签 c#

我有一些代码目前看起来有点像这样:

public void MainFunction() 
{
   try
   {
      SomeProblemFunction();
   }
   catch
   {
      AllFineFunction();
   }
}

private void SomeProblemFunction() { ... }
private void AllFineFunction() { ... }

如您所见,我目前正在将对 SomeProblemFunction 的调用包装在 try 语句周围,因为该函数可能会失败(它依赖于外部网络服务调用) .

我的问题是:try 语句应该是 a) 在问题函数之外(就像我现在拥有的那样)还是 b) 在问题函数内部?

谢谢。

最佳答案

通常,您希望允许异常传播到您的应用程序边界。您只想做以下几件事中的一件,但有异常(exception):

  • 包起来
  • 替换它
  • 让它传播

更新

从您的问题来看,您似乎正在为 Web 服务调用寻找容错解决方案。这是一个比简单的“我把 try-catch 放在哪里?”更复杂的问题。您仍然会将异常处理放在应用程序边界,但您会在那里实现容错策略。这需要考虑很多因素,包括异步调用您的 Web 服务、重试次数等。我建议搜索 Web 服务容错。

关于c# - try catch 语句的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21586260/

相关文章:

c# - 为什么 Visual Studio 2019 在 dotnet core 1.0 中运行测试,即使我的项目以 dotnet core 2.2 为目标?

c# - 覆盖派生类中显式实现的接口(interface)方法

c# - MVVM Light for WPF 中的连线 View

c# - 如何在继承类的规范中包含基类的规范?

c# - 如何在 asp.net 中创建具有类似于 Windows 窗体中的 datagridview 功能的 gridview

c# - Autofac Resolve<IEnumerable<T>>() 返回空列表

c# - 如何在没有 AsyncEx 库的情况下调用 anglesharp 异步方法?

c# - 括号还是引号?

c# - 触发其他控制事件时触发控制事件

c# - 在 WPF 绑定(bind)中使用 C# 表达式