Begin and Rescue block exception handling
我在rails异常处理方面经验不足。 我有这个片段
1 2 3 4 5 6 7 8 9 | def update @game = Game.find(params[:id]) begin params[:game][:tier] = eval(params[:game][:tier]) rescue @game.errors.add(:tier,"Please make sure the correct format for tier, example [100, 1000, 10000]") end #.... more code end |
如果params [:game] [:tier] ="[100,200]"一切都很完美。
如果出现错误情况的ruby语法如params [:game] [:tier] ="[100,200] abc"它会捕获错误,但应用程序只是粉碎。
如何使用'eval()'来处理异常,这样它就不会破坏应用程序? 为什么开始和救援在这种情况下不起作用? 感谢任何红宝石启蒙的帮助谢谢:)
如果
由于传入的数据应该是一个数组,我不会使用
1 2 3 4 | > JSON.parse("[100,200]") => [100, 200] > JSON.parse("[100,200] abc") JSON::ParserError: 746: unexpected token at 'abc'... |
然后只从
1 | rescue JSON::ParserError => e |
这也将解决救援问题,而不是解决您遇到的异常问题。
这是重复的
但是你应该以这种方式营救
1 2 3 4 5 6 7 8 | def update @game = Game.find(params[:id]) begin params[:game][:tier] = eval(params[:game][:tier]) rescue Exception => e @game.errors.add(:tier,"Please make sure the correct format for tier, example [100, 1000, 10000]") end #.... more code |
结束
为了使它工作