ruby-on-rails - 为什么要拯救异常然后引发异常?

标签 ruby-on-rails ruby exception

我正在查看有关 ruby​​ api 调用的 mandrill 文档 https://mandrillapp.com/api/docs/users.ruby.html#method=ping我注意到他们拯救了 Mandrill::Error 然后 raise 另一个异常。

我很好奇为什么有人会捕获一个异常然后引发另一个异常。这对我来说没有意义。

begin
    mandrill = Mandrill::API.new 'YOUR_API_KEY'
    result = mandrill.users.ping 
        # {"PING"=>"PONG!"}

rescue Mandrill::Error => e
    # Mandrill errors are thrown as exceptions
    puts "A mandrill error occurred: #{e.class} - #{e.message}"
    # A mandrill error occurred: Mandrill::InvalidKeyError - Invalid API key    
    raise
end

最佳答案

rescue Mandrill::Error => e
    # Mandrill errors are thrown as exceptions
    puts "A mandrill error occurred: #{e.class} - #{e.message}"
    # A mandrill error occurred: Mandrill::InvalidKeyError - Invalid API key    
    raise
end

在这种情况下,相同的异常被“重新引发”。此 rescue block 的唯一原因是记录有关异常的特定信息。

begin/rescue block 通常在对异常特别感兴趣时以这种方式使用,因此作者希望打印/记录异常信息。当下一个 rescue block 不打印任何异常信息而是静默处理它时尤其如此。

关于ruby-on-rails - 为什么要拯救异常然后引发异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24175633/

相关文章:

javascript - 点击事件上的 Coffeescript 未触发?

ruby-on-rails - 在 ubuntu 12.04 aws ec2 上安装 gem 时出错

ruby - 三个 Ruby 类,不止三个问题?

java - session.invalidate() IllegalStateException

Python 无法捕获重写的 NameError

ruby-on-rails - Rails gem ckeditor 在它自己的配置之前加载自定义 config.js

ruby-on-rails - Rails 从表单更新 ActiveRecord

ruby-on-rails - 用于 ruby​​/rails 的 OCR tesseract gem - 如何安装?

ruby - 当我告诉 rvm 安装 ruby​​ 1.9.2 时,它最终安装了 1.8.7

java - 在解码期间从 ElementNSImpl 到自己的类型的间歇性 ClassCastException