ruby - 救援与捕捉同时进行

标签 ruby error-handling try-catch throw

如果我想既挽救潜在的错误又捕获潜在的抛出,我应该如何嵌套它们?下面两个是等价的吗?这只是一个偏好问题?

begin
  catch(:some_throw) do
    ...
  end
rescue SomeError
  ...
end


catch(:some_throw) do
  begin
    ...
  rescue SomeError
    ...
  end
end

最佳答案

这是一个基于意见的问题,人们可以以任何一种方式争论。所以,在我看来...

如果您打算通过 throw 返回一个值,那么第二个选项似乎很有用,因为它可以让您rescue 错误并throw > 某种默认值。

即使您只是使用 throwcatch 来管理循环迭代并在某些条件下打破循环,第二个选项似乎仍然更具可读性并封装了所有逻辑在 catch block 内。

关于ruby - 救援与捕捉同时进行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34837057/

相关文章:

javascript - 如果 statusCode 不是 200,http 调用会返回什么类型的错误对象?

ruby-on-rails - Rails - 理解 application.js 和 application.css

mysql - Ruby 2 & Rails 4 查询在开发中返回结果,但在生产中返回 nil

ruby-on-rails - ActiveRecord::RecordNotFound - 无法找到 id=new 的联系人

ruby-on-rails - 我应该在哪里下载 Mac 10.6.4 上的 Ruby 和 Ruby on Rails?

jquery - 我应该如何处理插件中丢失的图像?

sql - 在MS Access中使用CCur()时如何处理错误 “#Error”

java - 但我不想_用 try/catch block 包围语句!

objective-c - Cocoa的try/catch/finally异常处理在什么情况下@finally是非冗余的?

java - 奇怪的 continue 关键字用法