質問

Rubyには二つの異なる除外機構:捨てる/Catch育/レスキュー"をご覧ください。

なぜかったですね。

の場合はご利用の方やいないのですか?

役に立ちましたか?

解決

と思い http://hasno.info/ruby-gotchas-and-caveats については説明の相違点

catch/throwと同じではありませんraise/レスキュー"をご覧ください。catch/throwができる早口よりブロックに戻る点が獲れに定義された特定のシンボルを上げ救助の実例外を扱うものに関する例外オブジェクトです。

他のヒント

  • raise, fail, rescue, は、 ensure 取扱い 誤差, としても知られる 例外
  • throwcatch制御フロー

他の 言語Rubyの投げキャッチを使用しない例外をスローしました。その代わりに、それらの提供終了の実行がない さらに作業が必要です。(グリム,2011)

終了単一レベルの制御フローのように while ループができな return.終端を様々なレベルでの制御フローのように、入れ子ループできる throw.

の例外機構を救は捨て行いざという時でも何が飛び出すのに深く入れ子の構築時に通常の処となります。することを投げます。(トーマス-ハ2001)

参考文献

  1. グリム,Avdi."投げ釣め、救助活動...ねん!" RubyLearningます。N.頁, 11月には2011年のこと。ます。1月.2012年. http://rubylearning.com/blog/2011/07/12/throw-catch-raise-rescue--im-so-confused/.
  2. トーマス-デーヴ、アンドリューです。"プログラミング。 :の実践的なプログラマーされています。N.頁, 2001年.ます。29。2015年までに http://ruby-doc.com/docs/ProgrammingRuby/html/tut_exceptions.html.

https://coderwall.com/p/lhkkug/don-t-confuse-ruby-s-throw-statement-with-raise は説明するとは思いを改善できます。以上をまとめますと、わがnicking一部のコードサンプルからのどん:

  1. raise/rescue 最も近い類似の throw/catch を構築でおなじみのその他の言語(またはPythonの raise/except).だがエラーを検出した状態です throw でその他の言語により、 raise Ruby.

  2. Rubyの throw/catch きの休憩執行上のスタックを探して catchraise/rescue ながのようになっていた。で使用することは稀であった時に"まで徒歩のスタック見つかるまで対応 catch"行動というアルゴリズムをまもるのではなく、意味の考え throw として対応するエラー条件です。

    うキャッチ&スローされないルビー? ある提案もの throw/catch 施工性が向上します。

の具体的な行動の違いて:

  • rescue Foo ま救助のインスタンス Foo どのサブクラス Foo. catch(foo) みッ 同じオブジェクト Foo.だりすることはできないパス catch クラス名ャのインスタンスでない同一性の比較.のためのインスタンス

    catch("foo") do
      throw "foo"
    end
    

    でます--- UncaughtThrowError: uncaught throw "foo" (または ArgumentError ここでコンポーネントのRuby前2.2)

  • 複数の救済条項で一覧表示することができ...

    begin
      do_something_error_prone
    rescue AParticularKindOfError
      # Insert heroism here.
    rescue
      write_to_error_log
      raise
    end
    

    から複数の catchesが必要な入れ子...

    catch :foo do
      catch :bar do
        do_something_that_can_throw_foo_or_bar
      end
    end
    
  • rescue に相当 rescue StandardError での慣用句の構築を行う。の"ベア catch"のように、 catch() {throw :foo}, ことができなくなっャストも行ないます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top