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