小编典典

对于 Python 中的错误/非法参数组合,我应该提出哪个异常?

all

我想知道在 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 中创建自己的BadValueErrors
是否很好理解,还是有另一种首选方法?


阅读 106

收藏
2022-03-03

共1个答案

小编典典

我只会提出ValueError,除非您需要更具体的例外..

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-
您的自定义类在使用上与ValueError相同,那么为什么不使用它呢?

2022-03-03