在我的C#应用​​程序中处理异常的地方在哪里是正确的?

Edw*_*ard 5 .net c# exception-handling try-catch

所以我最近编写了一个用C#编写的相对复杂的应用程序,它反复执行一系列小任务.当我第一次启动应用程序时,我意识到我输入的很多代码都是重复的,所以我开始将应用程序逻辑的大部分封装到我可以根据需要调用的单独的辅助类中.

不用说我的应用程序的大小(和代码量)减少了一半.但是当我经历时,我注意到我的应用程序中的其他内容似乎是重复的,看起来可以改进.

现在我的助手类中的大部分方法都是HttpWebRequest对文件进行或执行保存/删除操作.说过我需要处理最终调用无法完成的可能性,或者文件无法保存,因为没有足够的空间,或者其他什么.我遇到的问题是每次调用其中一个方法时我都要继续编写try/catch语句.最重要的是,我必须重新键入错误消息(或最终一个状态消息.我想知道它何时成功).

所以这里有一些我要输入的内容:

  try
  {
     ItemManager.SaveTextPost(myPostItem);
  }
  // Majority of the time there is more than one catch!
  catch
  {
     //^^^Not to mention that I have to handle multiple types of exceptions 
     //in order to log them correctly(more catches..ugh!)
     MessageBox.Show("There was an error saving the post.");
     //Perform logging here as well
  }
Run Code Online (Sandbox Code Playgroud)

从我到目前为止得出的结论是:

  • 对我而言,为我的应用程序写这个超过50次是太过分了.听起来我应该在帮助器类中包含这个并包含完整的捕获集.
  • 但我怎么知道结果呢?我可能想要返回一个包含错误/成功消息的字符串.
  • 实际上,对于这些类型的方法,它不需要从中调用辅助方法的方法将其封装在try/catch块中.

这种方法是否正确?还有另一种方法吗?我应该在调用方法中使用try/catch吗?由于这种我的第一次拍摄,我真的很想听听处理这种情况的其他人所说的话.

Mic*_*Fox 1

我认为将 try/catch 放在您调用的方法中是完全可以的。您可以通过多种方式将错误/成功代码返回到调用代码。.NET 和 c# 可以很好地处理枚举,因此您可以将ItemManager.SaveTextPost(myPostItem, out errorCode);errorCode 作为枚举值,让您知道是否发生任何问题。它也可以像让该方法在成功时返回 bool true 一样简单,否则返回 false。有很多方法可以处理这个问题,但就我而言,将 try/catch 放入方法中是更好的处理方式。