2 qq 34937472 qq_34937472 于 2016.05.09 17:50 提问

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

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

4个回答

Royal_lr
Royal_lr   Ds   Rxr 2016.05.09 18:08
已采纳

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

qq_34937472
qq_34937472 多谢回答!
一年多之前 回复
fk002008
fk002008   2016.05.09 18:05

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

synchronized (s.lock()) {

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

qq_34937472
qq_34937472 谢谢^_^!
一年多之前 回复
qq_34937472
qq_34937472 谢谢^_^!
一年多之前 回复
donggua3694857
donggua3694857   Rxr 2016.05.10 10:06

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

qq_34937472
qq_34937472 多谢回答!
一年多之前 回复
CSDNXIAON
CSDNXIAON   2016.05.09 18:02

java 中的e.printStackTrace()方法
java 中的printStackTrace()方法
java 中的printStackTrace()方法
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!