我有一段简单的代码,但它的工作方式与我预期的不同:
try (OutputStream ostr = new BufferedOutputStream(System.out)) {
ostr.write("lol".getBytes());
}
System.out.println("hmmm");
Run Code Online (Sandbox Code Playgroud)
结果只是
lol
Run Code Online (Sandbox Code Playgroud)
已打印,但未打印hmm。
我究竟做错了什么?我假设hmm没有打印,因为也ostr关闭了,这是正确的吗?System.out我知道这是一个非常综合的例子,但我仍然期待答案。
try 构造ostr在最后关闭。闭包传播到System.out. 随后的调用System.out.println("hmmm");将会带来System.out麻烦——但不会抛出异常。PrintStream(这是处理错误的奇怪方式。)试试这个:
System.out.close();
System.out.println("hmmm");
System.err.println("System.out in trouble: " + System.out.checkError());
Run Code Online (Sandbox Code Playgroud)
打印(通过仍然完整的 System.err 流):
System.out in trouble: true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4489 次 |
| 最近记录: |