如果您使用System.err.print("There was an error..."); System.error.flush();
,您是否需要System.out
在手前冲洗。我知道用System.out.print("bla");
and编写System.error.print("bla");
可能会导致未刷新的流混淆。
我假设您只需要在知道没有 aSystem.out.println();
或System.out.print("\n");
因为 a"\n"
自动刷新的情况下才需要这样做java.lang.System
,但我只是想确定一下。
另外,请不要在评论中说“你为什么不测试它?” 因为这有点难以测试,因为您基本上是依靠运气来查看流是否没有正确刷新。
谢谢!
编辑
回答:
我想只要Logger.getLogger(Your_Class.class.getName()).log(Level.WHATEVER, "message");
没有例外就使用。
-
如果你不相信我,sout 和 serr 会混淆...
证明(我刚做的课):
package test;
/**
*
* @author dylnmc
*/
public class Test {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
for (int i = 0; i < 20; i++) {
if (i % 2 == 0) {
System.out.println(i);
} else {
System.err.println(i);
}
}
}
}
输出 :
run:
0
1
3
2
4
6
8
10
12
14
16
18
5
7
9
11
13
15
17
19
BUILD SUCCESSFUL (total time: 0 seconds)
但是,如果您将 Test.java 转换为 jar 并运行java -jar file/to/jar/Test.jar
pause
,则不会出现不匹配的情况-正如某些人所说(因为这是大多数 ide 控制台中的问题)。
-
-
此外,我仍然无法在Netbeans ide 中刷新两个不同的流;他们仍然到处都是。