我有一些代码目前看起来有点像这样:
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/