一周前开始学习Ruby。迄今为止最令人沮丧的部分是异常处理。一直在寻找我想要做几个小时的例子。
我循环遍历一系列API代码,通过Net :: Http抓取文本。有时候抓取返回nil或空,我试图以一种方式测试它,让我重试抓取异常,直到它工作。
我相当确定我需要做一些像
这样的事情array.each do |api_key|
begin
result = # the code to grab the page via the API key
if result.empty or result.nil
raise SomeKindOfExceptionThing
end
rescue SomeKindOfExceptionThing
puts "some error message"
retry
else
# Act on the valid return for result
end
end
我不知道如何正确地形成这个,所以它做我想要的。我在异常中找到的大多数文档都是为了处理预定义类型的错误,或者只是处理通用的rescue
。
答案 0 :(得分:4)
正如@eugen所说,你的代码会起作用。但是,在这个特定的例子中,我不确定在提高异常方面看到了多少好处。
array.each do |api_key|
result = # the code to grab the page via the API key
if result.empty || result.nil
puts "some error message"
redo
end
# Act on the valid return for result
end
答案 1 :(得分:0)
您的代码看起来很好,您只需要定义您的异常类。 像
这样的东西class SomeKindOfExceptionThing < StandardError
end
应该足够了(你可能需要一个更好的名字)。