gpt4 book ai didi

ruby-on-rails - 开始和救援 block 异常处理

转载 作者:数据小太阳 更新时间:2023-10-29 08:32:42 25 4
gpt4 key购买 nike

我在 Rails 异常处理方面经验不多。我有这个片段

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]"一切都很完美。如果出现 params[:game][:tier] = "[100,200] abc"这样的 ruby​​ 语法错误,它会捕获错误,但应用程序会崩溃。

如何使用“eval()”处理异常,使其不会破坏应用程序?为什么 begin 和 rescue 在这种情况下不起作用?感谢对 ruby​​ 启发的任何帮助,谢谢 :)

最佳答案

如果 params[:game][:tier][100,200]; system('rm -rf/')" 会怎样?

因为传入的数据应该是一个数组,所以我不会使用 eval,而是使用 JSON.parse:

> JSON.parse("[100,200]")
=> [100, 200]
> JSON.parse("[100,200] abc")
JSON::ParserError: 746: unexpected token at 'abc'...

然后仅从 JSON::ParserError 异常中拯救

rescue JSON::ParserError => e

这也将解决 rescue not catching the exception 问题。

关于ruby-on-rails - 开始和救援 block 异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16195663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com