如何正确使用try-catch语句

Rob*_*uch 1 c# exception-handling exception try-catch

自从我上一次编程练习以来已经有一段时间了,所以这是一个相当基本的问题.但是我找不到任何具体的答案.

假设我已经定义了一个可能导致异常的方法.该方法看起来像这样(在相当伪代码中):

public int Calculate(int x, int y) 
{
  try 
  {
    doSomeCalc();
  }
  catch (SomeException ex) 
  {
    doExceptionHandling();
  }

  return result;
}
Run Code Online (Sandbox Code Playgroud)

现在,如果应用程序的另一部分想要使用此方法,它应该使用另一个try-catch块吗?

public MyMainApp() {
  try 
  {
    Calculate(1, 2);
  } 
  catch (SomeException ex) 
  {
    doExceptionHandling();
  }
}
Run Code Online (Sandbox Code Playgroud)

所以这里的问题是我应该在哪里使用try-catch,它在哪里是多余的?

DOK*_*DOK 7

通常,如果在catch中可以执行某些操作,则应该只使用try-catch.您可以重试失败的连接或以其他方式帮助用户继续吗?你想记录异常吗?

如果你无法做任何事情来恢复或优雅地降级,那么抓住异常是没有意义的.只需让它冒泡到应用程序顶部的一个catch(例如,在Web应用程序基页的Page_Error事件中)并在那里处理UI.