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

标签 python exception arguments

我想知道在 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 或者是否有另一种首选方法?

最佳答案

我只想提出 ValueError ,除非您需要更具体的异常(exception)..

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 相同,那么为什么不使用它呢?

关于python - 我应该对 Python 中的错误/非法参数组合提出哪个异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/256222/

相关文章:

python - 如何通过引发异常来 pytest 一个 python 函数

python - 缩短深度导入/长命名空间

python - 当推文不包含图像时,T​​weepy python 代码在 'media' 实体上返回 KeyError

python - 为什么我的服务的其他部分不能轻松使用 tastypie?我在 tastypie 资源和我的核心服务中有重复的代码

Java 7 精确重抛和遗留代码

php - 如何检查 PHP 中的异常

python - 让外籍人士在 python 中使用 .dtd 进行实体替换

Javascript 未知数量的参数

Java函数类似文字游戏,最后一个字母=下一个单词的第一个字母

c# - 通用谓词的默认值作为参数