からNotReadyException
を導出するのが最も適切であろうstandard exceptionsのどの、私は今オブジェクトが正しい状態ではありません。どの例外が適切ですか?
class Rocket(object):
def __init__(self):
self.ready = False
def prepare_for_takeoff(self):
self.ready = True
def takeoff(self):
if not self.ready:
raise NotReadyException("not ready!")
print("Liftoff!")
を持って言いますか? self
の状態/値が間違っているため、ValueError
になりますか?
私の使用例は、何らかの組み込み例外をスローするようにインターフェイスを文書化することを主にお勧めしますが、実際にサブタイプをスローする自由を持っているので、必要が生じたときに「個人的に」より細かく処理できます。あなたのアドバイスはまだ適用されますか?私はライブラリ固有の例外クラスでインターフェイスを混乱させたくありません。 –
@larsmans:標準的なアドバイスは、外部APIの目的で、モジュール内のアプリケーション固有の例外の1つです。多くの場合、 "Error"のような総称名であるため、クライアントはexcept module.Error: 'を実行できます。 –
@larsmans:ドキュメントのユースケースは重要ではありません。処理のためのユースケースが指標です。あなたの例外と 'ValueError' **を同じように処理しない場合、それらは同じことではありません。クラス定義は構造と動作をカプセル化します。例外構造は通常は面白くありません。例外的な動作は興味深い使用事例です。そしてそれは他の何よりも「例外」条項に沸き立つ。 –