gpt4 book ai didi

java - System.err 的意义何在?

转载 作者:IT老高 更新时间:2023-10-28 20:52:09 27 4
gpt4 key购买 nike

在 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
  • 标准输出 (stdout),通常进入控制台。暴露为 System.out
  • 标准错误 (stderr),通常也会发送到控制台。公开为 System.err

你的程序是正确的——它确实打印到标准错误。但在正常情况下,stderr 流与 stdout 流一样进入控制台,因此在视觉上无法区分。

但是,您应该使用 stderr 而不是 stdout 来获取错误消息的原因是重定向。这意味着您将 stderr 发送到文件而不是控制台。同时,stdout 不会受到影响,因为这两个流是独立的。

例如,您可以在 bash、cmd、PowerShell 等中执行此操作:

$ java Program 2> errors.txt

现在,所有带有 System.err.println() 的输出都将在 errors.txt 中结束,而 System.out.println() code> 仍将显示在屏幕上。这有助于调试。

关于java - System.err 的意义何在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21197737/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com