当前位置: 首页 > 知识库问答 >
问题:

理解Java在抛出异常时的堆栈解卷

叶冥夜
2023-03-14

在一次关于使用异常与返回值的讨论和研究中,以下内容引起了我的注意:

请假设在方法中的那一点抛出一个异常是有意义的(这是一个异常情况),并且它不是针对控制流(这是一个已知的错误)。仅出于性能原因,才会首选返回值。

共有1个答案

邬朗
2023-03-14

考虑到要创建异常的Stacktrace,java并不只是返回到直接调用方。Java一直上升到根堆栈。因此,根据您的小方法运行的深度,创建Stacktrace可能会非常昂贵。

还要注意这个问题:抛出异常的哪一部分是昂贵的?

 类似资料:
  • Edit2 @Paradematic在建议重定向而不是抛出异常方面做得很好;这解决了日志记录问题。Play 2中的问题是,重定向需要发生在所谓的范围内,而日期解析器调用并不总是这样。 最初的 有一个问题,即我的application.log被与uri日期解析器操作相关的错误填满,如果给定有效的uri日期,该操作应该成功。 然而,一些用户试图通过输入无效日期来规避这一点,希望获得免费访问付费订阅者专

  • 本文向大家介绍JAVA异常处理捕获与抛出原理解析,包括了JAVA异常处理捕获与抛出原理解析的使用技巧和注意事项,需要的朋友参考一下 JAVA 异常 当代码运行出现错误导致程序终止运行或出现错误情况的状况,就是异常。异常不是指语法错误,即不属于编译错误,只有运行的程序才会有异常。 这个时候,JAVA 就提供了优秀的处理方法:异常处理 异常处理能让程序在异常发生时,按照异常处理设定的逻辑对异常进行处理

  • 我有一个包含OClass对象的列表。我想创建这个对象的JSON。下面是我的代码: com.fasterxml.jackson.databind.jsonMappingException:未发现用于com.ontotext.trree.owlim_ext.r类的序列化程序,也未发现用于创建BeanSerializer的属性(为了避免异常,禁用serializationconfig.serializa

  • 代码运行良好。只是我不明白。在递归部分有困难的。在此部分中:我的想法是,首先它将一直执行直到一个阈值。则它将执行一次。因此只会被赋值一次。显然那不是真的。 对我来说,困难的部分是在方法中,做什么?在方法中,、做什么?

  • 问题内容: 有以下代码: 并有输出: 为什么它打印八次而不是“ y”。遇到Java 时如何调用? 问题答案: 在这里您正在捉住,而不是在这种情况下您的程序会崩溃。 如果您尝试此代码(修改为添加静态计数器) 输出量 因此,它已进行了6869次(不同运行次数的更改),并打印了最后一个值。如果您只是像以前那样打印,则可能是输出被缓冲而不被刷新,因为它不是。 更新资料 在内部调用该缓冲。您不会丢失缓冲区中

  • 我想了解SWIFT中的堆栈和堆中存储了什么。我有一个粗略的估计:你打印的所有东西和内存地址都不是值,那些存储在堆栈中,而打印出来的是值,那些在堆中,基本上是根据值和引用类型。我完全错了吗?另外,可以提供堆栈/堆的可视化表示吗?