Rubyのcatchとthrow
def est_throw # catchで指定したものと同じシンボルが指定されてるから呼び出し元のブロック終了 throw :test end puts "test start # ブロックの同じシンボルを引数にしてthrowを呼ぶとブロックを終了 catch(:test) do puts "before test_throw()" # メソット実行 test_throw() puts "after test_throw()" end puts "test end"
実行してみると
test start before test_throw() test end
after test_throw()
が出力されてない。
これはtest_throwを呼び出してるブロックが
catch(:test)
で指定されていて
上記のシンボル付きでthrowされたらブロック終了という事。
使い所はまだわからんけど。