了解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

因此,它已进行了

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

更新资料

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

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

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



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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存