Current File : //proc/thread-self/root/opt/alt/ruby18/share/ri/1.8/system/Kernel/catch-i.yaml |
--- !ruby/object:RI::MethodDescription
aliases: []
block_params:
comment:
- !ruby/struct:SM::Flow::P
body: <tt>catch</tt> executes its block. If a <tt>throw</tt> is executed, Ruby searches up its stack for a <tt>catch</tt> block with a tag corresponding to the <tt>throw</tt>'s <em>symbol</em>. If found, that block is terminated, and <tt>catch</tt> returns the value given to <tt>throw</tt>. If <tt>throw</tt> is not called, the block terminates normally, and the value of <tt>catch</tt> is the value of the last expression evaluated. <tt>catch</tt> expressions may be nested, and the <tt>throw</tt> 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: <em>produces:</em>
- !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