在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而不是屏幕,这有助于调试.