如何在Windows窗体应用程序中记录异常

sve*_*vit 4 c# exception-handling

我读了很多关于异常捕获基数的错误,我不得不承认我也这样做了:

try{
    ...
}
catch (Exception exception){
    MessageBox.Show(exception.Message, "Error!");
    MyLogger.Log(exception.Message);
}
Run Code Online (Sandbox Code Playgroud)

现在我想做对,并对此有一些疑问:

  1. 我应该捕获哪些异常(例如FileNotExists用于文件操作,但是对于TableAdapter或ReportClass(CrystalReports))
  2. 我在哪里可以看到对象可以抛出的异常列表(例如TableAdapter)
  3. 在Windows窗体应用程序中,我可以设置静态方法,例如,将任何异常记录到文件中
  4. 还有其他建议吗?

Jon*_*gel 7

  1. 抓住您可以合理处理的任何例外情况.例如,如果您尝试打开文件进行写入,则应该预期文件可能标记为只读,因此会引发异常.但在相同的情况下,您不会尝试捕获null参数异常,因为这可能是由于程序员错误.

  2. 它们应该在MSDN的函数引用中找到(你必须在每一个上查找它).对于用户定义的函数,除非有其他文档或摘要注释,否则您将不得不进行挖掘.

3,4.考虑使用.NET日志库


unc*_*l84 5

我有一件事要补充.如果您只想在不影响程序流的情况下记录异常,则可以始终执行以下操作:

try
{   
    ...
}
catch (Exception exception)
{    
   MyLogger.Log(exception.Message);

   throw;
}
Run Code Online (Sandbox Code Playgroud)