PATH:
opt
/
alt
/
ruby34
/
share
/
ri
/
system
/
Kernel
U:RDoc::AnyMethod[iI" catch:ETI"Kernel#catch;TF:publico:RDoc::Markup::Document:@parts[o:RDoc::Markup::Paragraph; [I"N+catch+ executes its block. If +throw+ is not called, the block executes ;TI"Nnormally, and +catch+ returns the value of the last expression evaluated.;To:RDoc::Markup::BlankLine o:RDoc::Markup::Verbatim; [I"*catch(1) { 123 } # => 123 ;T:@format0o; ; [ I"PIf <code>throw(tag2, val)</code> is called, Ruby searches up its stack for ;TI"Qa +catch+ block whose +tag+ has the same +object_id+ as _tag2_. When found, ;TI"Qthe block stops executing and returns _val_ (or +nil+ if no second argument ;TI"was given to +throw+).;T@o;; [I"*catch(1) { throw(1, 456) } # => 456 ;TI"*catch(1) { throw(1) } # => nil ;T; 0o; ; [I"JWhen +tag+ is passed as the first argument, +catch+ yields it as the ;TI"parameter of the block.;T@o;; [I"(catch(1) {|x| x + 2 } # => 3 ;T; 0o; ; [I"IWhen no +tag+ is given, +catch+ yields a new unique object (as from ;TI"O+Object.new+) as the block parameter. This object can then be used as the ;TI"Cargument to +throw+, and will match the correct +catch+ block.;T@o;; [I"catch do |obj_A| ;TI" catch do |obj_B| ;TI" throw(obj_B, 123) ;TI") puts "This puts is not reached" ;TI" end ;TI" ;TI"% puts "This puts is displayed" ;TI" 456 ;TI" end ;TI" ;TI"# => 456 ;TI" ;TI"catch do |obj_A| ;TI" catch do |obj_B| ;TI" throw(obj_A, 123) ;TI"/ puts "This puts is still not reached" ;TI" end ;TI" ;TI"0 puts "Now this puts is also not reached" ;TI" 456 ;TI" end ;TI" ;TI" # => 123;T; 0: @fileI"vm_eval.c;T:0@omit_headings_from_table_of_contents_below0I")catch([tag]) {|tag| block } -> obj ;T0[ I"(*args);T@BFI"Kernel;TcRDoc::NormalModule00
[+]
..
[-] loop-i.ri
[edit]
[-] Complex-i.ri
[edit]
[-] Pathname-i.ri
[edit]
[-] block_given%3f-i.ri
[edit]
[-] format-i.ri
[edit]
[-] readlines-i.ri
[edit]
[-] chop-i.ri
[edit]
[-] tap-i.ri
[edit]
[-] Hash-i.ri
[edit]
[-] catch-i.ri
[edit]
[-] warn-i.ri
[edit]
[-] exec-i.ri
[edit]
[-] iterator%3f-i.ri
[edit]
[-] Float-i.ri
[edit]
[-] spawn-i.ri
[edit]
[-] require_relative-i.ri
[edit]
[-] yield_self-i.ri
[edit]
[-] __method__-i.ri
[edit]
[-] %60-i.ri
[edit]
[-] caller_locations-i.ri
[edit]
[-] syscall-i.ri
[edit]
[-] printf-i.ri
[edit]
[-] then-i.ri
[edit]
[-] clone-i.ri
[edit]
[-] gem-i.ri
[edit]
[-] global_variables-i.ri
[edit]
[-] set_trace_func-i.ri
[edit]
[-] eval-i.ri
[edit]
[-] exit%21-i.ri
[edit]
[-] String-i.ri
[edit]
[-] autoload-i.ri
[edit]
[-] p-i.ri
[edit]
[-] pp-c.ri
[edit]
[-] pretty_inspect-i.ri
[edit]
[-] class-i.ri
[edit]
[-] __callee__-i.ri
[edit]
[-] srand-i.ri
[edit]
[-] putc-i.ri
[edit]
[-] jj-i.ri
[edit]
[-] system-i.ri
[edit]
[-] trap-i.ri
[edit]
[-] lambda-i.ri
[edit]
[-] caller-i.ri
[edit]
[-] abort-i.ri
[edit]
[-] sprintf-i.ri
[edit]
[-] callcc-i.ri
[edit]
[-] readline-i.ri
[edit]
[-] sleep-i.ri
[edit]
[-] Array-i.ri
[edit]
[-] autoload%3f-i.ri
[edit]
[-] gsub-i.ri
[edit]
[-] proc-i.ri
[edit]
[-] puts-i.ri
[edit]
[-] trace_var-i.ri
[edit]
[-] pp-i.ri
[edit]
[-] rand-i.ri
[edit]
[-] JSON-i.ri
[edit]
[-] chomp-i.ri
[edit]
[-] __dir__-i.ri
[edit]
[-] y-i.ri
[edit]
[-] untrace_var-i.ri
[edit]
[-] gets-i.ri
[edit]
[-] Rational-i.ri
[edit]
[-] at_exit-i.ri
[edit]
[-] fork-i.ri
[edit]
[-] local_variables-i.ri
[edit]
[-] select-i.ri
[edit]
[-] fail-i.ri
[edit]
[-] Integer-i.ri
[edit]
[-] raise-i.ri
[edit]
[-] test-i.ri
[edit]
[-] URI-c.ri
[edit]
[-] exit-i.ri
[edit]
[-] throw-i.ri
[edit]
[-] cdesc-Kernel.ri
[edit]
[-] binding-i.ri
[edit]
[-] j-i.ri
[edit]
[-] frozen%3f-i.ri
[edit]
[-] URI-i.ri
[edit]
[-] load-i.ri
[edit]
[-] open-i.ri
[edit]
[-] sub-i.ri
[edit]
[-] require-i.ri
[edit]
[-] print-i.ri
[edit]