多くの場合、custom(ized)エラーをスローする必要があります。パラメータの不一致などによりリソースが見つからない場合など。
私は既存のエラーをスローするか、既存のエラーから継承されたエラーをスローすることを好みます。そのため、すでに定義されていて完全に使用できた可能性のあるエラークラス(DRY)は紹介しません。ただし、元のエラーとの違いを明確にするために1つまたは2つの単語を継承して変更するだけで、表現とスタイルを同じに保つこともできます。
例えば:
Foo.new
Foo.some_external_id = nil
Foo.fetch_external_resource
# => InvalidOptions: Calling Foo#fetch_external_resource with nil is invalid
そのようなエラーはすでに定義されていると確信しています。実際、多くのコード行を読んだ後、MongoIDドライバーにが含まれていることがわかりましたMongoid::Errors::InvalidOptions: Calling Document#find with nil is invalid
。
RubyCoreとRubyonRailsで利用可能なエラークラスのリストはありますか?現在のプロジェクトでそのようなリストを取得する方法はありますか?
既存のエラーを再利用および/または継承するのは賢明ですか、それとも代わりに独自のカスタムセットを維持する必要がありますか?