-3

この質問で liron が尋ねたように、 -d サブファイルの構文エラーrequireはメソッドによって救出されrequire、 のエラーとして発生しますrequire。なぜこのように設計されているのですか?require読み取られたサブファイルの構文エラーではなく、エラーに起因する利点は何ですか? 私の理解では、この機能は、gem システムが Ruby の標準の一部になったときに導入されました。それが関係しているかもしれません。

4

1 に答える 1

1

問題のスタック トレースの関連部分:

/home/***/.rvm/.../rubygems/core_ext/kernel_require.rb:45:in `require':
 .../food_finder/lib/restaurant.rb:84: 
syntax error, unexpected end-of-input, expecting keyword_end (SyntaxError)**

エラーがどこにあるかを示しています

ここでエラーが発生するため、構文エラーはエラー from にラップされ ます。requireファイルはrequire メソッドによって処理されています。必要なファイルにエラーがある場合は、 のエラー処理によってラップされますrequire

ファイルが見つからない、gem の失敗に関連するさまざまな状況下で元の方法を試すことができるように、によって救出されたrequire(そして潜在的に再調達された) ためです。require

require、これは単なる別の方法ですが、エラー処理がまったく異なる方法で動作するように、何らかの特殊なケースにすることを提案していますか? そして、そうすることの ROI はそれだけの価値があると思いますか?

Ruby の動作を覆さないことの「利点」は、Ruby が統一されていることです。エラーが明示的に示されている場合、そうすることでROIがほとんど見られません。混乱の一部は、単なる別の方法である grokking でrequireはないことに起因する場合がありますが、それは言語の他の部分と同じ規則に従っているためです。

于 2013-05-18T13:32:04.173 に答える