使用API​​端点开始,救援

时间:2014-01-27 14:38:13

标签: ruby rescue

这是我的方法:

def get_video_duration
  @time ||= Panda.get("/videos/#{@video.panda_id}/metadata.json")["duration"]
  format_duration
end

我需要在使用beginrescue块包装它时“更好”地编写此方法,以便@time可以为nil,具体取决于API的响应。

2 个答案:

答案 0 :(得分:2)

是的,可以使用内联 rescue子句。

def get_video_duration
    @time ||= Panda.get("/videos/#{@video.panda_id}/metadata.json")["duration"] rescue nil
    format_duration
end

或者更明确地做到这一点。

def get_video_duration
  @time ||= Panda.get("/videos/#{@video.panda_id}/metadata.json")["duration"]
rescue YourException
  @time = nil
  format_duration
end

答案 1 :(得分:1)

可能会使用其他方法将其分解:

def fetch_video_duration

  Panda.get("/videos/#{@video.panda_id}/metadata.json")["duration"]

  rescue
    return nil
end

def get_video_duration
  @time ||= fetch_video_duration

  format_duration
end