--- !ruby/object:RI::MethodDescription
aliases: []
block_params:
comment:
- !ruby/struct:SM::Flow::P
body: catch executes its block. If a throw is executed, Ruby searches up its stack for a catch block with a tag corresponding to the throw's symbol. If found, that block is terminated, and catch returns the value given to throw. If throw is not called, the block terminates normally, and the value of catch is the value of the last expression evaluated. catch expressions may be nested, and the throw call need not be in lexical scope.
- !ruby/struct:SM::Flow::VERB
body: " def routine(n)\n puts n\n throw :done if n <= 0\n routine(n-1)\n end\n\n catch(:done) { routine(3) }\n"
- !ruby/struct:SM::Flow::P
body: produces:
- !ruby/struct:SM::Flow::VERB
body: " 3\n 2\n 1\n 0\n"
full_name: Kernel#catch
is_singleton: false
name: catch
params: |
catch(symbol) {| | block } > obj
visibility: public