我想知道在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
Run Code Online (Sandbox Code Playgroud)
唯一令人烦恼的是,每个包装都有自己的,通常略有不同BadValueError.我知道在Java中存在java.lang.IllegalArgumentException- 是否很好理解每个人都将BadValueError在Python中创建自己的s或者是否有另一种首选方法?
阅读内置异常我读到:
所有用户定义的异常也应该从这个类派生"关于异常.
我还看到一个ValueError,它说:
当内置操作或函数接收到具有正确类型但不适当值的参数时引发,并且情况不会由更准确的异常(如IndexError)描述.
如果我想为无效参数引发异常(相当于Ruby的ArgumentError),我该怎么办?我应该ValueError直接提出,或者最好是以我自己的意图揭示名称来继承ValueError吗?
在我的例子中,我接受一个关键参数,但我想限制键中的字符集,这样只/\A[\w.]+\Z/接受(Perl/Ruby正则表达式).