【发布时间】:2015-12-14 22:46:32
【问题描述】:
我正在尝试在 Sinatra 中编写一个接受临时 CSV 文件作为参数的 API。如果文件类型不是 text/csv 或者 csv 没有电子邮件列,我想引发异常,并且我希望确认页面仅显示错误消息。我想象它看起来像这样:
if params[:recipients_file]
raise ArgumentError, 'Invalid file. Make sure it is of type text/csv.' unless params[:recipients_file][:type] == "text/csv"
recipients_csv = CSV.parse(params[:recipients_file][:tempfile].read, {headers: true})
raise ArgumentError, 'Invalid CSV. Make sure it has an "email" column' unless recipients_csv.headers.include?('email')
recipients += recipients_csv.map {|recipient| recipient["email"]}
end
但是,只要不满足其中一个条件,我就会收到非常难看的错误消息,例如 NoMethodErrors 等。我只想让 API 停止执行并在确认页面上返回错误消息。我该怎么做?
【问题讨论】:
标签: ruby api exception exception-handling sinatra