比如我有个程序:
try{
//省略
}catch(Exception e){
System.err.println("出错了!");
e.printStackTrace();
}
System.out.println("异常演示。。。");
运行结果是:打印的堆栈信息位置不固定,就是main方法里输出的“异常演示。。。”这几个字有时在堆栈信息上边,有时插在好多堆栈信息的中间,请问为什么不是把堆栈信息都打印完了再输出“异常演示。。。”这几个字呢?不是顺序执行的吗?
------解决方案--------------------
应该是由于你使用System.out导致的,
- Java code
public void printStackTrace() { printStackTrace(System.err); }public void printStackTrace(PrintStream s) { synchronized (s) { s.println(this); StackTraceElement[] trace = getOurStackTrace(); for (int i=0; i < trace.length; i++) s.println("\tat " + trace[i]); Throwable ourCause = getCause(); if (ourCause != null) ourCause.printStackTraceAsCause(s, trace); } }