1. ホーム
  2. python

[解決済み] Pythonで悪い/不正な引数の組み合わせに対してどの例外を発生させるべきですか?

2022-03-14 17:21:40

質問

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 -- を作成することが理解されていますか? BadValueError それとも、他に望ましい方法があるのでしょうか?

どのように解決するのですか?

私なら バリューエラー より具体的な例外が必要な場合を除きます。

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 - カスタムクラスの使用方法は バリューエラー ということで、それを使ってみてはいかがでしょうか。