Eclipse中的控制台打印顺序[重复]
Posted
技术标签:
【中文标题】Eclipse中的控制台打印顺序[重复]【英文标题】:Console Printing Order in Eclipse [duplicate] 【发布时间】:2013-10-28 17:44:28 【问题描述】:我在 Eclipse 中键入了一个简单的算术程序。在 Eclipse 中运行程序时,每次运行时输出都会以奇怪的顺序出现。有时异常最后出现 print 语句首先出现(这是正确的方法)。有时它以混乱的顺序出现,反之亦然。为什么会发生以及如何纠正它?每次执行时是否有任何设置可以使其以正确的方式打印。下面的屏幕截图显示了它的外观。请帮我解决这个问题。
正确顺序:
我们运行几次后的顺序不正确
package com;
public class Abc
/**
* @param args
*/
public static void main(String[] args)
System.out.println("begin main");
// TODO Auto-generated method stub
int a = 10;
int b = 0;
int c = 0;
System.out.println("value of a BD is " + a);
System.out.println("value of b BD is " + b);
System.out.println("value of c BD is " + c);
c = a/b; //Arthmetic Exception
System.out.println("value of a AD is " + a);
System.out.println("value of b AD is " + b);
System.out.println("value of c AD is " + c);
【问题讨论】:
当监视器发表这样的评论时,如果他们发布指向重复项的链接将会很有帮助。 【参考方案1】:这里使用了两个不同的流。您正在使用System.out.
,并且使用System.err
打印异常。它们是缓冲的,因此一个输出可能会在另一个输出之前打印。
您可以在异常行之前调用System.out.flush();
:
System.out.flush();
c = a/b; //Arthmetic Exception
【讨论】:
+1。另一种方法是将错误流设置为输出流,如System.setErr(System.out);
这样只有一个流需要使用控制台。
不幸的是,这并不能可靠地解决问题...【参考方案2】:
更详细一点:打印语句的输出将发送到System.out
。但是,异常消息将发送至System.err
(请参阅this)。这两个是单独的输出流,它们恰好都去同一个地方:你的控制台。它们被独立缓冲和处理。在您展示的第二种情况下,print
语句正在缓冲,但在发生异常时尚未打印。
edit 这里还有一个复杂的地方,那就是Eclipse 控制台不是真正的Windows 控制台。正如here 等其他地方所指出的,过去在Windows 平台上Eclipse 控制台存在问题,因为Windows 没有为Eclipse 提供一种使其控制台像本机控制台一样运行的好方法。如果您添加了flush
调用但仍然有问题,请尝试从命令提示符运行您的程序,看看是否有什么不同。
【讨论】:
旁注,与答案无关:如果您想以[description](link)
的形式添加链接,请不要忘记链接中的http://
之类的协议。或者最好只使用Ctrl+L
选项。这会将http://
部分添加到您的链接中,并使您的答案更易于稍后编辑。以上是关于Eclipse中的控制台打印顺序[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 Eclipse Pydev 控制台和 Idle 中打印 Unicode
eclipse console输出结果顺序不对该怎么办?那个输出结果为啥是红色的?