我正在从Ruby 1.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用于错误处理的约定,但我想我想知道它的行为是否不同于puts。

最佳答案

默认情况下,puts写入STDOUT。通过指定STDERR.puts,您可以将输出发送到STDERR句柄。尽管实现行为是相同的,但是使用STDERR代替STDOUT肯定会影响程序的使用者,因为按照惯例,他们将尝试从STDOUT捕获程序的输出。最佳实践是将调试信息,错误,警告,状态等记录到STDERR,并将实际程序输出记录到STDOUT。

关于ruby - STDERR.puts与Ruby中的puts有何不同?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22310012/

10-12 17:52
查看更多