栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

了解Java堆栈

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/497615.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号