2009-03-30 7 views
5

私はルビーの例外階層(pickaxeとhummingbirdの両方に記載されています)にアクセスしていますが、どの例外に関する情報が見つからなかったのかはわかりません用語の意味。ルビの右の例外サブクラスの使用

正しい例外クラスを使用していますか?

+0

http://redmine.ruby-lang.org/projects/ruby/wiki/ExceptionClassesDocの例外クラスについての説明がありました –

答えて

8

「依存します」。

Rubyの主な問題の1つは、優れた仕様の欠如です。しかし、これまで悪化していました。

これは主にスタイルの問題です:エラーが組み込みの例外クラスのいずれかでうまく記述できる場合は、それを使用してください。サブクラスが意味をなさないと思うなら、それを使用してください。

そうしないと、あなたはに従うことを検討することもでき:

を 階層は時間の無駄である非常に精巧な例外を作成します。誰も手助けをしないでください そしてすべての努力は無駄に に行きます。代わりに、ライブラリまたは名前空間ごとに 例外を作成し、 例外の種類を示す例外のうち、 例外の中に例外理由がある場合は、 を作成してください。

たとえば、OSカプセル化の場合、 libaryの場合、 というOsencapExceptionという例外を作成します。

+1

ライブラリごとに1つの例外を作成するのではなく、各条件に対して1つの例外を作成することをお勧めしますあなたはキャッチしたい。デフォルトでRuntimeErrorを使用することができます。レスキューブロックでエラーメッセージを解析することが検出されたら、新しいクラスを作成します。 – Arsen7

1

というか、それはあなたには関係していない場合、それは一般的に誰にも関係ありません。ライブラリを作成する場合は、ライブラリのユーザーが理解できるものを使用する必要がありますが、それはそれについてです。

10

独自の例外を作成するときは重要です。 1つの重要な注意点は、StandardError(一般的な間違い)ではなく、救済(引数なし)で捕捉されるのではなく、Exceptionから継承する例外です。

+8

これは、あなたが作成するExceptionクラスは常にStandardErrorから継承し、Exceptionから直接継承しないことを意味します。私はあなたがこれを少し明確にすることができたと思う... –

関連する問題