Cat*_*ish 2 ruby exception-handling ruby-on-rails
我正在查看mandrill文档中的ruby api调用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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
在这种情况下,同样的例外被"重新提出".此rescue块的唯一原因是记录有关异常的特定信息.
begin/rescue当异常具有特殊意义时,通常以这种方式使用块,因此作者希望打印/记录异常信息.当下一个rescue块没有打印任何异常信息而是静默处理它时,尤其如此.
| 归档时间: |
|
| 查看次数: |
866 次 |
| 最近记录: |