嵌套 begin/rescue/ensure 有效吗?

Is nested begin/rescue/ensure valid?

这对我来说似乎没问题,我找不到任何另有说明的文档,但我希望它得到验证。我有一段代码可能会失败,无论出于何种原因,确保在它确实失败后保护它,然后无论发生什么都需要执行一些代码。这似乎需要一个嵌套的 begin/ensure 块。那有效吗? (这里没有真正的救援,只是那种类型的块。)

代码如下:

  begin
    # save default state
    begin
      # save current state
      # set state for this snippet
      # snippet
    ensure
      # return current state or default if none
    end
  ensure
    # schedule next execution of this code, always.
  end

这是一个完全有效的方法。通常需要嵌套,有时使用与您在此处所做的相同的方法,有时通过调用堆栈。