问题描述
- java中e.printStackTrace()方法的输出位置问题
- 这是我们教材上面一段代码,我照着打了一遍想要看下结果,发现e.printStackTrace()方法输出的结果每次在运行时出现的位置都不同。如图
很明显,这个方法输出的应该是这么一段语句:
java.lang.ArrayIndexOutOfBoundsException: 3
at ExceptionDemo2.main(ExceptionDemo2.java:13)
根据我代码的顺序,这段语句的输出位置应该是在“3”和“有异常出现!”之间。
但是实际上它有时出现在正确位置,有时出现在最后面,有时甚至拆开了一半在上一半在下,每次运行结果都不同,想知道这是什么原因,为什么会出现,诚心求解,望不吝赐教!
解决方案
这个可能和线程有关系,,这个打印可能线程谁先抢到,谁就先打印
解决方案二:
异常信息的打印是另外一个线程执行的。
你可以看看这个e.printStackTrace()方法就知道了
synchronized (s.lock()) {
控制台也是一种资源,打印的时候会去获取锁定,所以他不是按你想象的顺序进行的
解决方案三:
异常打印的线程执行的时间是随机的。。。你不知道他什么时候去执行
解决方案四:
java 中的e.printStackTrace()方法
java 中的printStackTrace()方法
java 中的printStackTrace()方法
时间: 2024-10-26 05:49:02