2

重複の可能性:
コンストラクターからの例外のスロー

オブジェクトを初期化するとき-オブジェクトが後でそのすべての責任を果たすことを妨げる問題を処理する正しい方法は何でしょうか。

たとえば、コンストラクターがリモート接続に使用される構成変数のセットを初期化するとします。すべての構成変数が適切に設定されているわけではないため、後でオブジェクトがその接続に使用されると、オブジェクトは機能せず、最終的に例外がスローされます。

これに対するいくつかの解決策を考えることができます

  1. コンストラクターはそこで例外をスローしてから
  2. オブジェクトは、構成設定を検証するためのメソッドを提供します(これは、そのオブジェクトのクライアントが、使用する前に有効な状態をチェックする追加のタスクを持っていることを意味します)
  3. そのままにして、例外がスローされるようにし、例外が発生した場合はクライアントに処理を任せます。

したがって、これらのオプションのどれが、提供されたシナリオで最良のアプローチと見なされるか、またはこれを処理するための代替のより良い方法がある場合、それは何でしょうか。

4

1 に答える 1

1

間違いなく例外をスローします。それはあなたの取り扱いをとても抽象化します。

これにより、次のような(ただしこれらに限定されない)任意の方法で処理できます。

  • 変数を設定して、オブジェクトで有効になっている機能と有効になっていない機能を判別します。
  • 上記のオブジェクトのメソッドを呼び出します。
  • ユーザーにエラーを表示する
  • ある種のエラーログを呼び出す

処理されない場合、例外はスクリプトを強制終了し、問題の詳細なデバッグバックトレースを提供します。

于 2012-05-19T21:14:44.443 に答える