首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >感染StackOverflowError有什么坏处呢?

感染StackOverflowError有什么坏处呢?
EN

Stack Overflow用户
提问于 2013-08-27 15:06:21
回答 2查看 398关注 0票数 9

只是好奇而已。In an answer关于捕获StackOverflowErrors有人写道:“肯定有这样的情况,堆栈溢出可能会使应用程序不一致,就像内存耗尽一样。”StackOverflowErrors有什么特别之处,以至于它们威胁要破坏应用程序的状态,而不是在出现错误的情况下抛出NullPointerException?我能想到的一件事是,StackOverflowError可能发生在通常永远不会抛出异常(或其他Throwable )的地方(例如,一个简单的getter),所以程序可能没有为此做好准备。还有更可怕的问题吗?

EN

回答 2

Stack Overflow用户

发布于 2013-08-27 15:09:13

堆栈溢出错误并不意味着内存耗尽,本身也不会造成任何不一致。

但是堆栈溢出错误通常是一个错误。您应该修复错误,而不是捕获异常。不要使用异常系统来隐藏bug。

即使你知道存在堆栈过深的风险(例如图形探索),也有比让堆栈爆炸更好的方法来控制堆栈。

来自the Javadoc of the Error superclass

Throwable An Error是

的子类,表示合理的应用程序不应尝试捕获的严重问题。大多数这样的错误都是异常情况。虽然ThreadDeath错误是一种“正常”情况,但它也是error的一个子类,因为大多数应用程序都不应该尝试捕获它。

票数 10
EN

Stack Overflow用户

发布于 2013-08-27 15:15:36

错误是一个不应该被捕获的严重问题,因此:也不要捕获超类(Throwable)如果一个方法抛出了一个错误,你不必声明一个throws -子句

在出现错误后,应用程序行为通常是不可预测的-错误指示异常情况

因此,如果抛出了StackOverflowError,则应用程序目前达到了堆栈位置的最大值。你可以重新检查你的应用程序是否启动,比如垃圾收集器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18459090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档