Tôi đã tự hỏi về các phương pháp hay nhất để chỉ ra các kết hợp đối số không hợp lệ trong Python. Tôi đã đi qua một vài tình huống mà bạn có một chức năng như vậy:Tôi nên đưa ra ngoại lệ nào đối với các kết hợp đối số xấu/bất hợp pháp trong 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
Các ít phiền toái duy nhất với điều này là mỗi gói có riêng của mình, thường là hơi khác nhau BadValueError
. Tôi biết rằng trong Java có tồn tại java.lang.IllegalArgumentException
- là nó cũng hiểu rằng tất cả mọi người sẽ được tạo riêng của họ BadValueError
s trong Python hoặc là có một phương pháp ưa thích?
Đồng ý - Tôi hầu như luôn luôn sử dụng ValueError cho các công cụ như thế này, quá. – mipadi
> "vậy tại sao không sử dụng?" - Tính đặc hiệu. Có lẽ tôi muốn nắm bắt một số lớp ngoài "MyValueError", nhưng không phải bất kỳ/tất cả "ValueError". –
Vâng, do đó, một phần của câu hỏi cụ thể là nơi ValueError khác được nâng lên. Nếu hàm callee thích đối số của bạn nhưng gọi math.sqrt (-1) trong nội bộ, một người gọi có thể đang bắt ValueError mong rằng * các đối số * của nó không phù hợp. Có lẽ bạn chỉ cần kiểm tra tin nhắn trong trường hợp này ... – cdleary