2

なぜRubyはStandardError、によって暗黙的に例外のみを処理するように設計されているのrescueですか?他の例外については、なぜそれらを明示的に指定する必要があるのrescueですか?

begin
  #codes here which may generates exceptions
rescue
  #codes to handle some thing which really needed to be done when exceptions there
end

誰かが私がそのコアを理解するのを手伝ってもらえますか?

4

2 に答える 2

2

型を明示的に指定しない場合のデフォルトの動作の理由は、rescue StandardError通常、少なくとも明示的に言及しない限り、プログラムで非 StandardErrors を処理したくないためです。典型的な非 StandardError 例外のいくつかは次のとおりです。

LoadError
NotImplementedError
SyntaxError

通常、プログラム内の不足しているスクリプト ファイル、実装されていないメソッド、およびコード内の構文エラーについて知りたいと考えており、それらを誤って処理したり、例外コードで無視したりしないようにします。

別の構文を使用して例外をキャッチすることもできます (推奨されません)

rescue Exception => e  
于 2013-02-09T09:28:12.227 に答える
2

ここから引用します

上のグラフは、ほとんどのサブクラスが StandardError として知られるクラスを拡張していることを示しています。これらは、典型的な Ruby プログラムが処理しようとする「通常の」例外です。他の例外は、低レベルの、より深刻な、または回復可能性の低い状態を表しており、通常の Ruby プログラムはそれらを処理しようとはしません。

これがあなたの質問に答えることを願っています。

于 2013-02-09T09:23:11.703 に答える