qq_34937472
qq_34937472
采纳率50%
2016-05-09 09:50 阅读 7.7k
已采纳

java中e.printStackTrace()方法的输出位置问题

这是我们教材上面一段代码,我照着打了一遍想要看下结果,发现e.printStackTrace()方法输出的结果每次在运行时出现的位置都不同。如图图片说明图片说明图片说明
很明显,这个方法输出的应该是这么一段语句:
java.lang.ArrayIndexOutOfBoundsException: 3
at ExceptionDemo2.main(ExceptionDemo2.java:13)
根据我代码的顺序,这段语句的输出位置应该是在“3”和“有异常出现!”之间。
但是实际上它有时出现在正确位置,有时出现在最后面,有时甚至拆开了一半在上一半在下,每次运行结果都不同,想知道这是什么原因,为什么会出现,诚心求解,望不吝赐教!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • 已采纳
    Royal_lr Royal_lr 2016-05-09 10:08

    这个可能和线程有关系,,这个打印可能线程谁先抢到,谁就先打印

    点赞 1 评论 复制链接分享
  • fk002008 lambda-fk 2016-05-09 10:05

    异常信息的打印是另外一个线程执行的。
    你可以看看这个e.printStackTrace()方法就知道了

    synchronized (s.lock()) {

    控制台也是一种资源,打印的时候会去获取锁定,所以他不是按你想象的顺序进行的

    点赞 1 评论 复制链接分享
  • donggua3694857 GrayHJX 2016-05-10 02:06

    异常打印的线程执行的时间是随机的。。。你不知道他什么时候去执行

    点赞 1 评论 复制链接分享

相关推荐