了解Java堆栈

了解Java堆栈,第1张

了解Java堆栈

在这里您正在捉住,

Error
而不是
Exception
在这种情况下您的程序会崩溃。

如果您尝试此代码(修改为添加静态计数器)

public class StackError {static int i = 1;public static void main(final String[] args) throws Exception {    System.out.print("1");    doAnything();    System.out.println("2");}private static void doAnything() {    try {        i++;//          System.out.println(i);        doAnything();    } catch (Error e) {        System.out.print("y"+i+"-");    }}}
输出量
 1y6869-2

因此,它已进行了

stackerror
6869次(不同运行次数的更改),并打印了最后一个值。如果您只是
y
像以前那样打印,则可能是输出被缓冲而不被刷新,因为它不是
println


更新资料

System.out.println
内部调用
PrintStream
该缓冲。您不会丢失缓冲区中的任何数据,它会在缓冲区满后或显式调用flush时将所有数据全部写入到output(在您的情况下为端子)。

回到这种情况,这取决于内部动态,即堆栈已被填满多少,可以从捕获中执行多少打印语句

doAnything()
以及将这些字符数写入缓冲区。最后在主背上印有数字
2

javadoc对缓冲流的引用



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5104696.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存