Python で不正な引数の組み合わせが発生した場合にどの例外を発生させるべきですか? [closed] 質問する

Python で不正な引数の組み合わせが発生した場合にどの例外を発生させるべきですか? [closed] 質問する

Python で無効な引数の組み合わせを示すためのベスト プラクティスについて知りたいです。次のような関数がある状況に何度か遭遇しました。

def import_to_orm(name, save=False, recurse=False):
    """
    :param name: Name of some external entity to import.
    :param save: Save the ORM object before returning.
    :param recurse: Attempt to import associated objects as well. Because you
        need the original object to have a key to relate to, save must be
        `True` for recurse to be `True`.
    :raise BadValueError: If `recurse and not save`.
    :return: The ORM object.
    """
    pass

これに関する唯一の厄介な点は、各パッケージに独自の、通常はわずかに異なる があることですBadValueError。Java には が存在することは知っていますがjava.lang.IllegalArgumentException、Python では誰もが独自の を作成することが十分に理解されているのでしょうBadValueErrorか、それとも別の推奨される方法があるのでしょうか。

ベストアンサー1

私はただ上げるだけです値エラーただし、より具体的な例外が必要な場合を除きます。

def import_to_orm(name, save=False, recurse=False):
    if recurse and not save:
        raise ValueError("save must be True if recurse is True")

実際には意味がありませんclass BadValueError(ValueError):pass。カスタムクラスは、値エラーでは、なぜそれを使用しないのでしょうか?

おすすめ記事