当前位置: 首页 > 面试题库 >

Java try / catch性能,是否建议将try子句中的内容保持在最低限度?

姜嘉赐
2023-03-14
问题内容

考虑到您有这样的代码:

doSomething() // this method may throw a checked a exception
//do some assignements calculations
doAnotherThing() //this method may also throw the same type of checked exception
//more calls to methods and calculations, all throwing the same kind of exceptions.

现在我知道,实际上在构造异常(特别是展开堆栈)时会降低性能。而且我还阅读了几篇文章,指出进入try /
catch块时性能稍有下降,但是这些文章似乎都没有任何结论。

我的问题是,是否建议将try
catch中的行保持在最低限度?例如,在try子句中仅包含实际上可以引发所捕获异常的行。try子句中的代码运行速度是否较慢或会导致性能下降?

但更重要的是,考虑到这样做,什么是最佳实践/更具可读性的解决方案:

try {
    doSomething() // this method may throw a checked a exception
//do some assignements calculations
doAnotherThing() //this method may also throw the same type of checked exception
//more calls to methods and calculations, all throwing the same kind of exceptions.
}
catch (MyCheckedException e) {
   //handle it
}

要么 :

try {
    doSomething() // this method may throw a checked a exception
}
catch (MyCheckedException e) {
   //Store my exception in a Map (this is all running in a loop and I want it to   continue running, but I also want to know which loops didn't complete and why)
   continue;     
} 
 //do some assignements calculations
try {
    doAnotherThing() // this method may throw a checked a exception
}
catch (MyCheckedException e) {
    //Store my exception in a Map (this is all running in a loop and I want it to   continue running, but I also want to know which loops didn't complete and why)
   continue;
}

考虑到您将以完全相同的方式处理所有此检查的异常。


问题答案:

在这里的示例中,真正的性能问题是doSomething()和doAnotherThing()都抛出异常。快速输入try-block,直到它引发异常

这实际上取决于您的情况。如果在以任何一种方式抛出MyCheckedException时都需要做同样的事情,我认为将它们放在同一个try块中既可读性又更好,但是如果您需要以不同的方式处理两种不同的情况,那么分离它们更有意义。

编辑:我读了您评论的结尾,您假设这两种处理方式相同,在这种情况下,我会将它们放在同一try块中。



 类似资料:
  • 问题内容: 在PHP 5中使用try-catch语句时,要考虑什么样的性能影响? 以前,我已经在网上阅读了一些有关该主题的古老的,看似矛盾的信息。我目前必须使用的许多框架都是在php 4上创建的,并且缺少php 5的许多优点。因此,我在使用try-catchs与php方面经验不足。 问题答案: 要考虑的一件事是,没有引发异常的try块的开销与实际引发和捕获异常的开销是一个不同的问题。 如果仅在失败

  • 问题内容: 大家。我有一个关于java中返回值的菜鸟问题。这是我的代码。 Eclipse报告“此方法必须返回long类型的结果”错误。但是我确实在try块中返回了提示。eclipse建议在try / catch块之后添加一个返回值,这会破坏逻辑。你能告诉我这里有什么问题吗?谢谢。 问题答案: 当一个被抛出的返回值是不确定的。引发异常时,控制权立即传递给异常处理程序。在这种情况下,您记录错误。然后控

  • 本文向大家介绍C#中Try-Catch语句真的影响程序性能吗?,包括了C#中Try-Catch语句真的影响程序性能吗?的使用技巧和注意事项,需要的朋友参考一下 很多帖子都分析过Try-Catch的机制,以及其对性能的影响。 但是并没有证据证明,Try-Catch过于损耗了系统的性能,尤其是在托管环境下。记得园子里有位网友使用StopWatch分析过Try-Catch在不同情况下,与无Try-Cat

  • 我正在编写外壳脚本,需要检查是否安装了终端应用程序。除非有更整洁的方法,否则我想使用TRY/CATCH命令来执行此操作。

  • 我想知道如果我在一个while循环中使用一个或两个try catch,这是否影响性能? 下面的示例代码: 我的问题以前可能有人问过,但我也想知道是否比更好。 编辑: 我知道如果抛出,那么捕捉它需要一些时间,但是如果程序没有出现异常,情况如何:

  • 在实际开发中,根据 try catch 语句的执行过程,try 语句块和 catch 语句块有可能不被完全执行,而有些处理代码则要求必须执行。例如,程序在 try 块里打开了一些物理资源(如数据库连接、网络连接和磁盘文件等),这些物理资源都必须显式回收。 Java的垃圾回收机制不会回收任何物理资源,垃圾回收机制只回收堆内存中对象所占用的内存。 所以为了确保一定能回收 try 块中打开的物理资源,异