3

我正在尝试使用 gem 'roo' 上传文件。当我检查文件类型时,我在实例方法中有这个:

def open_spreadsheet
  case File.extname(file.original_filename)
    when ".xls" then Roo::Excel.new(file.path, file_warning: :ignore)
    when ".xlsx" then Roo::Excelx.new(file.path, file_warning: :ignore)
    when ".csv" then Roo::CSV.new(file.path, file_warning: :ignore)
    when ".ods" then Roo::LibreOffice.new(file.path,file_warning: :ignore)
    else raise "Unknown file type"
  end
end

有没有办法捕获此异常,以便用户只看到消息并再次尝试,而不会实际引发语法错误?

4

1 回答 1

-1

你可以有 catch 块

begin
  # call methods
rescue ErrorType => error_object
  # handle the error
end

您还可以在begin rescue块内定义交易

begin
   ActiveRecord::Base.transaction do
     # call methods
   end
rescue ErrorType => error_object
  # handle the error
end

只有在没有发生错误的情况下,方法才会被持久化到 db

还要检查Rails 错误

于 2015-02-23T14:31:20.140 回答