java - 将输出和错误消息打印到控制台
问题描述
我正在尝试向控制台打印输出和错误消息。但有时输出的顺序会发生变化,首先它会打印错误消息然后打印简单的消息有人能帮我理解为什么会这样吗?输出顺序大部分时间都在变化。打印输出没有一致性。我正在使用 Eclipse IDE,我得到的输出如下。
我试图打印以下代码,
System.out.println("simple message");
System.err.println("error message");
预期的结果是这样的:
简单的信息
错误信息
但实际结果是这样的:
错误信息
简单的信息
解决方案
System.out.println() 和 System.err.println() 是不同的执行流。输出流被缓存,因此所有写入都进入此内存缓冲区。经过一段时间的沉寂后,它们实际上被写出来了。这是一个 for 循环,它基本上再次显示您的错误:
for(int x = 0; x <= 5; x++) {
System.out.println("Out");
System.err.println("Err");
}
为了每次通过循环“刷新” Streams 调用 .flush() :
for(int x = 0; x <= 5; x++) {
System.out.println("Out");
System.out.flush();
System.err.println("Err");
System.err.flush();
}
在这个 for 循环中,out 消息和 err 消息将首先打印,但在每次刷新时,您的 out 消息将首先打印,然后是您的 err 消息。输出将是这样的:
OutErr
Out
Out
Out
Out
Out
Err
Err
Err
Err
Err
那是因为 System.out 和 System.err 在不同的 Streams 上执行。
推荐阅读
- javascript - 在 R 中迭代和显示值
- python - str.title() 和 mac 上的编码
- html - SVG 图像未修复到引导父列 div
- javascript - 等到 Promise 被解析后,将其结果传递给 React 的 return 语句
- excel - 替换函数给出对象不支持属性或方法
- asp.net-mvc - 使用 customErrors mode="On" 的 HTTP 错误不一致
- sap - 传递 CLOB TO Sys 过程 SAP HANA
- google-app-engine - 与 MongoDB Atlas 等效的 Google App Engine VPC 对等互连
- rabbitmq - 什么时候从队列中删除消息?
- html - 将 LocalStorage 数据动态解析成一张表