标准错误输出:在Linux中是stderr,在JAVA中是System.err,在Golang中是Print()/Println()
标准输出:在Linux中是stdout,在JAVA中是System.out,在Golang中是fmt.Println()
引入JDK官方文档的解释System.err,System.out:
out:“标准”输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。
err:“标准”错误输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。按照惯例,此输出流用于显示错误消息,或者显示那些即使用户输出流(变量 out 的值)已经重定向到通常不被连续监视的某一文件或其他目标,也应该立刻引起用户注意的其他信息。
官方解释是不是很抽象?确实是,大多数人也这样认可的。我用通俗的语言解释一下:
out : 把数据流输出到显示器或其他外设
err : 把数据流输出到显示器或其他外设,但是err数据流一般是错误信息,而前者是正确信息。
其实从字面意思上就能看出,一个是专为输出错误用的,一个是通常输出用的,都是输出流,但按照人们习惯惯例还是分开的好。
System.err,System.out的正确使用:
try {
InputStream input = new FileInputStream("d:\\java\\...");
System.out.println("open a file");
} catch (IOException e) {
System.err.println("open a file failed:");
e.printStackTrace();
}
JAVA中的System.err,System.out 还有一个区别是 前者不带缓冲区,后者带缓冲区,这就可能导致输出结果可能与预期结果顺序不一致。但这个特性其他语言不一定满足,所以不做介绍。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。