我正在使用Microsoft计算机视觉API。 API可以识别面部,并提供有关图像中有多少人的数据,估计的年龄,以及估计的性别。但是,我有一个“do”循环,我无法“拯救”。这是下面的代码:
values = json_data['faces'].map do |result|
这是我收到的错误:
C:/Users/KVadher/Desktop/micr1.rb:122:in `block in <main>': undefined method `[]' for nil:NilClass (NoMethodError)
我希望我的代码看起来像这样:
begin
values = json_data['faces'].map do |result|
rescue
end
然而,当我这样做时,我收到以下错误:
C:/Users/USERNAME/Desktop/micr1.rb:123: syntax error, unexpected keyword_rescue
如果请求不适用,我该如何传递我的代码?
答案 0 :(得分:5)
map
阻止end
begin
values = json_data['faces'].map do |result|
# ...
end
rescue
end
答案 1 :(得分:2)
正如亚历山大指出的那样,end
语句缺少do
解释了意外的关键字错误。
然而,以这种方式使用救援是not good practice。它将有效地掩盖将来发生的任何问题。你应该总是具体拯救你的东西。所以这会更好:
begin
values = json_data['faces'].map do |result|
...
end
rescue NoMethodError
end
但是,错误告诉您json_data
为零。因此,要解决此问题,更简单的解决方案是:
if json_data
values = json_data['faces'].map do |result|
...
end
else
values = [] # or whatever you want values to be if there are none
end