【发布时间】:2011-07-01 19:13:58
【问题描述】:
我正在编写一个简单的应用程序来处理 POSTed CSV 文件,并针对无效输入(例如非 CSV 文件)对其进行测试。我正在使用 CSV::Reader.parse 命令在控制器方法中解析 CSV,如下所示:
@parsed_file = CSV::Reader.parse(params[:file]) rescue []
但是,尽管有救援声明,但当输入不正确的提交时,我仍然会收到未捕获的 CSV::IllegalFormatError。我在这里错过了什么?
谢谢!
【问题讨论】:
-
你试过用括号括起来吗?像这样
@parsed_file = (CSV::Reader.parse(params[:file]) rescue [])。你用的是什么版本的红宝石,这对我来说很好。 -
是的,这对我也不起作用。我正在使用 1.8.7。这对我来说没有任何意义......
-
这行得通吗?
@parsed_file = raise CSV::IllegalFormatError rescue nil如果没有,如果您在测试环境之外执行(即通过网络服务器),它是否有效 -
如果这就是您的要求,则始终为
@parsed_file分配nil的值(与给定文件无关)。 -
这是一个很好的测试来看看救援是否真的有效:) 看起来好像是这样,我的猜测是 ruby 奇怪地对你的操作进行分组。尝试使用 begin 而不是 parens 像
@parsed_file = begin CSV::Reader.parse(params[:file]) rescue [] end
标签: ruby-on-rails exception csv user-input rescue