如何在 Rails 代码的 Ruby 中捕获 Zlib::BufError?

How can I catch Zlib::BufError in my Ruby on Rails code?

我用 Rails 构建了一个应用程序。我有一个很大的地址列表,我正在使用 Geocoder 通过 Bing/Google API 对其进行标准化。这是我当前获取地址信息的电话:

Geocoder.search(address)

这工作得很好,我可以解析响应 JSON。但是,当我离开脚本 运行 时,它有时会因以下错误而崩溃:

Zlib::BufError: buffer error

我不想让脚本崩溃,而是想捕获这个错误并继续脚本。我怎么能用 Ruby 做到这一点?我不确定要捕获哪个异常,如果有的话。

要确保 Zlib 可用,您需要在要捕获错误的文件中 require 'zlib'。看起来 Geocoder 并没有在任何地方将其声明为依赖项,因此在评估 rescue 行时可能不会加载它。

require 'zlib'

begin
  Geocoder.search('110 William St, 28th Floor New York, NY 10038')
rescue Zlib::BufError => boom
  puts 'Stack Overflow appears to have moved.'
end