如何在类初始化中挽救输入

时间:2013-10-15 08:30:51

标签: ruby exception

我有一个Ruby类,在类的初始化中,用户提供了一个文件路径和文件名,该类打开了该文件。

def Files
  def initialize filename
     @file = File.open(filename, "r").read.downcase.gsub(/[^a-z\s]/,"").split 
  end

  def get_file
      return @file
  end

end

然而,问题是用户可以提供不存在的文件,如果是这种情况,我需要进行救援,因此我们不会向用户显示丑陋的响应。

我在想的是这样的事情

def Files
   def initialize filename
      @file = File.open(filename, "r").read.downcase.gsub(/[^a-z\s]/,"").split || nil
   end
end

然后在调用新文件的脚本中我可以做

def start
  puts "Enter the source for a file"
  filename = gets
  file = Files.new filename

  if file.get_file.nil?
    start
  else
    #go do a bunch of stuff with the file
  end
end

start

我认为这是最好的方法是因为如果传入的文件很大,我猜测最好不要将大量文本作为变量传递给类。但那可能不对。

无论如何,我真的想找出处理输入无效文件的最佳方法。

1 个答案:

答案 0 :(得分:2)

def Files
  def initialize filename
    return unless File.exist?(filename)
    @file = File.read(filename).downcase.gsub(/[^a-z\s]/,"").split
  end
end