Error handling 使用try-catch处理错误(再次)

Error handling 使用try-catch处理错误(再次),error-handling,Error Handling,只是一个一般性的问题, 你总是要处理错误吗 我刚刚和我的一位同事进行了这场辩论,在他的代码中,我看到很多地方的东西都被try语句包住了,而catch语句中什么都没有 我一直认为不处理错误或对用户隐藏错误是一种不好的做法(除了在日志文件中记录错误) 只是想知道别人怎么想 谢谢。捕获异常然后“使其沉默”的做法是邪恶的!我认为99.99%的SOER会同意这一点 下面是一个非常重要的异常处理最佳实践。猜猜这一节的内容是什么 您可以做的最糟糕的事情是捕获(异常)并在其上放置一个空代码块。永远不要这样做 任

只是一个一般性的问题, 你总是要处理错误吗

我刚刚和我的一位同事进行了这场辩论,在他的代码中,我看到很多地方的东西都被try语句包住了,而catch语句中什么都没有

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

只是想知道别人怎么想


谢谢。

捕获异常然后“使其沉默”的做法是邪恶的!我认为99.99%的SOER会同意这一点

下面是一个非常重要的异常处理最佳实践。猜猜这一节的内容是什么

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


任何值得一读的异常处理文章都会提到异常吞咽的概念,而不是在某种程度上这样做。

捕获异常然后“使其沉默”的做法是邪恶的!我认为99.99%的SOER会同意这一点

下面是一个非常重要的异常处理最佳实践。猜猜这一节的内容是什么

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


任何值得一读的异常处理文章都会提到异常吞咽的概念,在某种程度上,不要这样做。

如果你不能处理异常,那么不要抓住它。可能是调用堆栈中较高层的人能够正确地处理它,恭喜你,你现在阻止了他们完成工作。

如果你不能处理异常,那么不要捕获它。这可能是因为更高层的人能够正确地处理它,恭喜你,你现在阻止了他们做他们的工作。

只有西斯才是绝对的交易。不过,说真的,我能想到我们最近遇到的至少一个例子,我们希望抛开它继续前进。我们最近实现了一个内部点击跟踪解决方案,它向MVC控制器发送一个异步AJAX请求以进行记录。我们不在乎它是否被记录,也不希望自己的日志中充满我们不想要的错误日志。那么,为什么要为在catch块中做任何事情而烦恼呢。我们考虑在catch块中添加代码,以便在出现错误时至少增加一个计数器,但此时没有业务原因

这实际上取决于你是出于懒惰还是因为有很好的理由不这么做


我可能会因为说那句话而受到指责,因为这通常是一种不好的做法。我的勇敢能得到分数吗?

只有西斯才是绝对的。不过,说真的,我能想到我们最近遇到的至少一个例子,我们希望抛开它继续前进。我们最近实现了一个内部点击跟踪解决方案,它向MVC控制器发送一个异步AJAX请求以进行记录。我们不在乎它是否被记录,也不希望自己的日志中充满我们不想要的错误日志。那么,为什么要为在catch块中做任何事情而烦恼呢。我们考虑在catch块中添加代码,以便在出现错误时至少增加一个计数器,但此时没有业务原因

这实际上取决于你是出于懒惰还是因为有很好的理由不这么做


我可能会因为说那句话而受到指责,因为这通常是一种不好的做法。我是否因勇敢而获得分数?

如果你可以处理异常,你必须处理它


try
{
  //CODE
}
catch
{
  LogException();
  //and/or
  RollbackTransaction();
  //and/or
  ShowFriendlyMessageToUser();
  //and/or
  DoSomethingUsefullWithTheException();
  throw; //This is optional
}
这毫无意义,但我已经看到了很多


try
{
  //CODE
}
catch
{
   throw;
}
编辑1 你需要一个很好的论据来提出这样的观点。不管怎样,你可能会被解雇


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

如果可以处理异常,则必须处理该异常


try
{
  //CODE
}
catch
{
  LogException();
  //and/or
  RollbackTransaction();
  //and/or
  ShowFriendlyMessageToUser();
  //and/or
  DoSomethingUsefullWithTheException();
  throw; //This is optional
}
这毫无意义,但我已经看到了很多


try
{
  //CODE
}
catch
{
   throw;
}
编辑1 你需要一个很好的论据来提出这样的观点。不管怎样,你可能会被解雇


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