禁用System.err

dte*_*ech 18 java

有没有办法设置流System.err所以写入它的所有内容都被忽略?(即丢弃未输出)

dog*_*ane 38

System.setErr(new PrintStream(new OutputStream() {
    public void write(int b) {
    }
}));
Run Code Online (Sandbox Code Playgroud)

  • 我找到了另一种方法:System.err.close(); (7认同)
  • 嗨@Noumenon,我已经调查了这个问题并得出了与这里相同的结论:[不可能重新打开](/sf/answers/1910082541/)。如果需要重新打开,您应该更愿意在使用 System.setErr(..) 覆盖之前使用 PrintStream _err = System.err; 备份流。之后可以使用 System.setErr(_err) 进行恢复。问候,埃里克。 (2认同)

Pet*_*rey 18

您可以使用System.setErr()为其提供一个不执行任何操作的PrintStream.

有关代码,请参阅@ dogbane的示例.


Hur*_*rda 5

只需将 Error 设置为 dommy 实现即可:

System.setErr(new PrintStream(new OutputStream() {
            @Override
            public void write(int arg0) throws IOException {
                // keep empty
            }
        }));
Run Code Online (Sandbox Code Playgroud)

您需要获得特别许可才能执行此操作。

RuntimePermission("setIO")
Run Code Online (Sandbox Code Playgroud)