如何将错误消息打印到标准错误?

在UNIX中,我应该编写一个Java文件,将“Exit 1”打印到标准错误,然后以状态1退出.

这是我的方法..

System.err.println("EXIT 1");
System.exit(1);

这是我应该做的吗?

如果是这样,我怎么能在Unix shell中使用它?当我在bash中编译并运行它时,它只打印“EXIT 1”(因此它与System.out.println做同样的事情,我为什么要使用“err”?).这里的“标准错误”是什么?

最佳答案
每个节目都有三个流:

>标准输入(stdin),通常来自键盘.暴露为System.in
>标准输出(标准输出),通常进入控制台.暴露为
System.out
>标准错误(stderr),通常也会进入控制台.公开为System.err

你的程序是正确的.它会打印到stderr,但在正常情况下,stderr流会转到控制台,就像stdout流一样.

但是,您应该使用stderr而不是stdout来处理错误消息的原因是因为您可以重定向它.这意味着您将stderr的内容发送到文件而不是控制台.例如,您可以在bash,cmd,Powershell等中执行此操作:

$java Program 2> errors.txt

现在,对System.err.println()的所有调用都将转到errors.txt而不是屏幕,这有助于调试.

转载注明原文:如何将错误消息打印到标准错误? - 代码日志