assert
デバッグ目的のみで使用せず、標準コードの一部として使用した場合、パフォーマンスやコードのメンテナンスに問題はありますか?は
assert x >= 0, 'x is less than zero'
より良いか悪いか
if x < 0: raise Exception('x is less than zero')
また、関数の先頭で設定した場合のように、コード全体のいつでも が0 未満になるとエラーが発生し、関数内のどこでも が 0 未満になると例外が発生するように
if x < 0 raise error
、常にチェックされるようなビジネス ルールを設定する方法はありますか?try/except/finally
x
assert x < 0
x
ベストアンサー1
アサートは、決して発生しないはずの条件をテストするために使用する必要があります。その目的は、プログラムの状態が破損した場合に早期にクラッシュさせることです。
例外は、発生する可能性のあるエラーに対して使用する必要があり、ほとんどの場合、独自の Exception クラスを作成する必要があります。
たとえば、設定ファイルから に読み込む関数を作成している場合dict
、ファイル内のフォーマットが不適切な場合は が発生するはずですConfigurationSyntaxError
が、assert
を返そうとしていないことがわかりますNone
。
あなたの例では、x
値がユーザー インターフェイスまたは外部ソースから設定される場合は、例外が最適です。
同じプログラム内の独自のコードによってのみ設定される場合x
、アサーションを使用します。