我正在从Ruby1.9编程中学习这门语言,他们在本书的一开始就把STDERR.puts扔进了一段代码中,但没有解释为什么要使用它,也没有解释它与puts有何不同。
我已经在谷歌上搜索并维基了这个术语,但我能从我的研究中收集到的所有信息是,它涉及到诊断。在Ruby编程提供的代码中,似乎没有链接到错误异常处理。
这是代码。
require_relative 'csv_reader'
reader = CsvReader.new
ARGV.each do |csv_file_name|
STDERR.puts "Processing #{csv_file_name}"
reader.read_in_csv_data(csv_file_name)
end我确实在某个地方读到过STDERR.puts用于异常错误处理的文章,但我猜我想问的是它的行为是否与but有什么不同。
发布于 2014-03-11 03:59:21
默认情况下,puts写入STDOUT。通过指定STDERR.puts,您可以将输出发送到STDERR句柄。尽管实现行为是相同的,但使用STDERR而不是STDOUT肯定会影响程序的使用者,因为按照惯例,他们将尝试从STDOUT捕获程序的输出。最佳实践是将调试信息、错误、警告、状态等记录到STDERR,并将实际程序输出记录到STDOUT。
发布于 2014-03-11 04:20:19
每个程序在产生时都有三个标准文件描述符:标准输入、输出和错误流。
标准输入流是应当从中读取程序输入的通用流。同样,标准输出流是可以写入程序输出的通用流。那么,什么是标准误差呢?
在UNIX系统中,标准输出和标准错误之间的区别很细微,但却非常重要,这是因为程序是通过管道一起使用的。程序通常被设计为使用其他程序的输出作为它们的输入;这是通过将一个程序的标准输出重定向到另一个程序的标准输入来实现的,通常是通过管道操作符(|)。这使得标准错误仍然连接到终端。用户可以选择在终端本身中查看发送到该流的数据,或者将其重定向到日志文件或/dev/null,任何用户想要的。请注意,发送到stderr的数据不一定是错误消息;它只是与程序的实际输出分开的数据。
支持这种范例对于程序的可用性非常重要,因为它为程序的输入、输出和消息提供了一个可预测的用户界面。用户可以在他们认为合适的时候操作这些,而且通常有趣的应用程序会以意想不到的方式出现。
因此,一般而言,标准输出用于实际输出,标准错误用于与用户通信。
https://stackoverflow.com/questions/22310012
复制相似问题