【发布时间】:2017-03-01 18:01:20
【问题描述】:
当 java 抛出溢出异常并且您开始在输出中看到红色时,程序究竟在什么时候停止输出/相对于导致它的行的执行抛出的错误消息在哪里?
例如,我正在运行一个递归程序,出于调试目的,我让它在每次递归时打印它的值。在程序停止递归/打印之前很久就会弹出一个 stackoverflow 错误,但是当我按照输出到底部时,程序正在执行我想要的操作,直到它停止打印。是java检测到溢出然后程序继续迭代时打印的错误,还是我的程序输出的最后一行发生堆栈溢出?
我知道这可能措辞不佳,我是新手,可能有一种更有效的方式来表达我的问题。
【问题讨论】:
-
您在堆栈跟踪中看到的异常应该大致在它发生的那一刻打印出来。
-
您是在询问在检测到 StackOverflow 之前堆栈跟踪需要多少次函数调用?
-
我认为在构建堆栈帧时会发生溢出。也就是说,在尝试进行方法调用期间,在该方法内的任何代码开始执行之前。
-
另外,很明显,一个代码 sn-p 和异常的前 20 行左右可以帮助我们更具体。