C#抛出顶级函数的异常,然后记录它们

时间:2016-02-27 18:08:41

标签: c# .net

我有以下异常处理代码:

private void foo (){
  try{ 
     foo1(); 
  }
  catch(Exception ex){ 
     if (ex is specificException){ //Catch only the exceptions that I can really handle
         // log the exception
         // Display a message to the user that something went wrong. 
         return;
     }
     throw; 
  }
}

private void foo1(){
  try{
       // code that could throw an exception
  }
  catch{
    throw;
  }
}

所以问题是:

我应该继续使用这种方法来处理异常,还是应该记录低级函数中的所有异常然后抛出它们?

P.S 我捕获所有未处理的异常,然后优雅地关闭应用程序。

1 个答案:

答案 0 :(得分:2)

作为一般规则,除非您想要捕获特定类型的异常,否则应避免使用try / catch。

try / catch

使用不当的示例
try {
   //some work
}
catch(Exception e) {
   //this is bad, it traps everything!
}

很好用于try / catch

try {
   //some work
}
catch(ArguementNullException e) {
   //good, we only trapped the one exception we were interested in, everything is is thrown
}

那么,如果我们没有尝试/捕捉到所有地方,我们如何处理例外?答案是使用自动日志记录工具为您完成。 Elmah是一个很好的例子,你安装了Nuget软件包和wallah,你的所有异常都会被自动记录下来,你可以查看它们。