使用try catch(AGAIN)处理错误

时间:2010-03-29 22:04:35

标签: error-handling

只是一个普遍的问题, 你总是要处理错误吗?

我刚与我的一位同事进行了辩论,在他的代码中,我看到很多地方的东西都围绕着一个try语句而且在catch语句中没有任何内容。

我一直认为不处理错误或将错误隐藏在用户之外是不好的做法(除了将它们记录在日志文件中)。

只是想知道其他人的想法

感谢。

4 个答案:

答案 0 :(得分:2)

如果您无法处理异常,那么不会抓住它。可能有人进一步通过调用堆栈可以正确处理它,并祝贺,您现在已经阻止他们完成自己的工作< golfclap /&gt ;.

答案 1 :(得分:1)

捕获异常然后“静音”的做法是邪恶的!我认为99.99%的SOers会同意这一点。

这是一个非常nice article from CodeProject的异常处理最佳实践。猜猜其中一个部分专门用于什么?

  

你可以做的最糟糕的事情是catch(异常)并在其上放置一个空的代码块。永远不要这样做。

任何有价值的异常处理文章都会提到吞咽概念的异常,而不是以某种方式去做。

答案 2 :(得分:0)

只有西斯交易绝对。但是,说真的,我可以想到最近我们遇到的至少一个实例,只是放弃它并继续前进。我们最近实施了一个内部点击跟踪解决方案,该解决方案将一个异步AJAX请求发送到要记录的MVC控制器。我们不关心它是否未被记录,我们不希望我们自己的日志填满我们不想要的错误日志。那么为什么要担心在catch块中做任何事情的开销呢。我们考虑在catch块中添加代码,以便在出现错误时至少增加一个计数器,但此时没有商业原因。

这真的取决于你是出于懒惰,还是因为实际上有充分理由不这样做。

我可能会说,因为这是一般的不良做法。我是否获得了勇敢的分数?

答案 3 :(得分:0)

如果你可以用它做什么,你必须处理异常


try
{
  //CODE
}
catch
{
  LogException();
  //and/or
  RollbackTransaction();
  //and/or
  ShowFriendlyMessageToUser();
  //and/or
  DoSomethingUsefullWithTheException();
  throw; //This is optional
}

这没有意义,但我已经看了很多


try
{
  //CODE
}
catch
{
   throw;
}

编辑1 你需要一个很好的论据来做这样的事情。也许你会被解雇:-p


try
{
  //CODE
}
catch
{
   //HIDE TO THE WORLD THAT THIS IS FAILING
}