我想知道在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
在Python中创建自己的s或者是否有另一种首选方法?
我只会提出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的使用完全相同,那么为什么不使用它呢?
我会继承 ValueError
class IllegalArgumentError(ValueError): pass
有时候创建自己的异常更好,但是从内置的异常继承,尽可能接近你想要的.
如果您需要捕获该特定错误,那么拥有一个名称会很有帮助.
我认为处理这个的最好方法是python本身处理它的方式.Python引发了一个TypeError.例如:
$ python -c 'print(sum())' Traceback (most recent call last): File "", line 1, in TypeError: sum expected at least 1 arguments, got 0
我们的初级开发人员刚刚在google搜索"python exception错误论点"中找到了这个页面,我很惊讶,自从提出这个问题以来,十年内没有人提出明显(对我而言)的答案.
我大多只看到ValueError
在这种情况下使用的内置.