catch-throw Ruby 大域処理

Ruby 大域脱出/catch・throwの使い方

Share on Facebook0Pin on Pinterest0Share on Google+0Tweet about this on Twitter0Email this to someone

 最も内側のループからの脱出にはbreakを用います。一方、いくつもネストした処理から一気に抜け出したい時は大域脱出を用います。

任意の処理からの脱出

 大域脱出の手段としてcatch・throwが提供されています。いくつもネストした処理から一気に抜けだしたいときにはthrowを呼び出します。catch・throwを用いて、ネストした繰り返し処理から脱出してみましょう。

  loopは無限ループするメソッドですが、throwを呼び出すことによって最初のループで脱出できています。

 catchに渡したブロックの中でthrowを呼び出すと、catchの呼び出し元に戻ることができます。catchには、throwする際にcatchを指定するための名前をシンボルまたは文字列で指定します。throwを呼び出すと、指定された名前のcatchのブロックを中断し、catchの呼び出し元に戻ります。

 catchは以下のようにネストさせることができます。throwに渡す名前によって、どのcatchのブロックを中断するかが変わります。

  throwの第二引数にはcatchの戻り値を渡すことができます。第二引数が渡されなかった場合、catchはnilを返します。

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">