给我一些你的想法,关于哪种是更好的编码实践/使代码更高效/看起来更漂亮/等等:提高和提高使用 if 语句预测和捕获潜在问题的能力?或者只是充分利用 try/catch ?

假设这是针对 Java 的(如果重要的话)。

编辑: 我目前正在摆脱一些公认的过时且受限制的当前编码实践,但我对在某些方面(例如这一点)这样做的必要性感到有点困惑。我只是想询问一些对此的看法。不是辩论。

其他提示

if块是稍快;如果你不将需要一打,他们比try/catches一个更好的主意。异常应该是代码运行例外,不是每一次。我使用的罕见事件,如服务器断开异常(尽管他们每天都在发生几次),并if块我的任何可控变量。

不管你写什么代码,你最终会同时使用。我不能对Java运行时说话,但.NET运行时有配合使用的try-catch块的相关的性能问题。其结果是,我只尝试在区域使用它们,我已经有了一个明确的方式来处理一旦被抓(即使它只是一个记录问题的存在)。

例外

如果你发现自己在代码中使用了大量的任何的try-catch块或if-else语句块,或者你的方法往往是相当长的,考虑代码重构成更小的方法一个更大的数字。你的逻辑的意图会更容易遵循 - 以及更容易进行单元测试

我想如果语句是更好的。你不能围绕每行代码与在try..catch(当然你可以,但你不应该这样做)。您可以围绕一个代码块与尝试catch但不是每一行。

和异常缓慢下来。

我的2p:使用 try/catch 是最好的:

  • 它使其他编码人员绝对清楚您正在执行异常处理
  • 编译器了解您在做什么,并且可以为您执行更合适的编译时检查

根据我的经验,使用 if 条件逻辑使得区分错误处理和业务逻辑变得更加困难。

从我被更有经验的开发者和分析师说,try / catch语句是面向更多的对象,如果是多个程序的。

我个人不喜欢。

我知道的一个事实,即一个try / catch较慢,导致性能损失,但如果我要使用十几IFS验证之前,我可以做我想做的事情,我会一直使用一个try / catch以节省的代码行的数目。

这让我的生活变得更容易不必验证什么,如果语句失败,只是做什么,我会在我的“其他”块做了......在我的“抓”块。

有时候,我明明if语句在一个try / catch,但反正。

附上一些

我使用if时,有只有少数的东西来验证(1或2)做什么,我需要做的了。

还有尚未这里提到的一件事。

使用的if-else语句,每一个代码运行时间,病症的至少1是保证被评估执行。我敢肯定,我们都知道一个的if-else-elseif的作品,但要明确......在如果语句的部分总是会评估,如果是假的,然后下面的否则-如果进行评价时,依此类推,直到仅在否则留待评估

所以使用if-else语句会影响你的表现。不显著(在大多数情况下),但它确实需要的CPU时间来执行评估。

的try-catch语句,并纠正我,如果我错了,直到他们要求没有得到在运行时考虑的(即抛出一个异常)。所以,简单地包装一下你的代码在一个try-catch到异常实际上是由它抓住了也不会影响性能。

此外,它是不引起性能命中的接球,但投掷。

和一个重要的一点要提出的是,的try-catch语句不应该被用于条件逻辑。他们应该只用于他们是怎么设计的:异常处理

捕获异常是必不可少的,如果你知道如何与他们无关。如果你没有正确的处理异常的方式,那么你应该让它去,对一些代码进一步环比上涨可能有更好的方法来处理它。

它通常是一个好主意,有你的应用程序的绝对顶级异常处理程序捕获异常,他们被用户看到之前。在ASP.NET中,你可以在Global.asax的Application_Error事件做到这一点。在其他语言/环境,你会在你的主循环这样做,无论那是。

但请注意,也有一些例外,它们总是最好留给未捕获。有时,当异常情况发生就表明您的应用程序的状态已经被严重损害,并且不能被信任。唯一安全的事情是杀死并重新启动。

@PersonalPerson - 抱歉,但是这仅仅是懒编码。而不是使用一个try-catch因为if语句,为什么不重构你的代码中有太多的(即把你的验证逻辑在其自己的方法)。这将让你的代码更清洁,更具可读性和维护的最佳实践的性能。

切勿尝试编写代码来实现行#最少。这将最终总是涨得厉害。当然,你可以找到一个更优雅的方式写一些东西,你编的好友将在户外和AAH,但它只是使事情的可读性。

我发誓,我以前跟你的代码工作,这使我的头不疼。

使用异常是通知的的东西在松散耦合的方式发生了错误代码的其他部分的通用方法。让我们想象一下,如果你想通过使用来处理一些特殊的条件,如果.. NAD否则..你需要插入到你的代码的不同部分的一些任意变量和其他的东西,它可能会易导致不久后有意大利面条的代码。

让未来想象你正在使用任何外部库/包,它的作者决定把他/她的代码,其他任意的方式来处理错误状态 - 它会迫使你去适应它处理它的方式 - 例如你需要检查,如果特定方法返回true或false或什么的。

使用异常使得处理错误更容易 - 你只是假设,如果出现错误 - 其他代码会抛出异常,所以你只是包裹在try块中的代码,并在自己的方式来处理可能的例外

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top