我正在编写一个装饰器来验证一些功能。我尝试尽可能多地使用内置函数来完成繁重的工作,但我一直在选择使用它们时应该捕获哪些异常。

例如:

def Validated(fun):
    def ValidatedFun(*args, **kwargs):
        try:
            _ = dict(kwargs.get('untrusted_data', ()))
        except ? as e:
            raise BetterError('Additional relevant info') from e
        return fun(*args, **kwargs)
    return ValidatedFun

我想知道:
  • dict(和其他内置函数) 明确引发的最衍生的异常是什么?
  • 在哪里可以找到列出它们的文档? (他们没有
    https://docs.python.org/ )
  • 最佳答案

    所有 Python 标准类型都遵循一些默认异常的约定。记录了行为 for the exceptions ,而不是类型。

    对于 dict ,异常(exception)是 TypeError ValueError 。此时还可以引发其他异常,但这些异常不依赖于输入( MemoryErrorKeyboardInterrupt )。
    TypeError 表示不支持传入的对象类型; dict documentation 记录了接受哪些类型(映射或可迭代对象),其他所有内容都会引发异常。接受的类型必须符合某些期望;如果不满足这些条件,则会引发 ValueError(类型正确,但值错误)。

    关于python - 在哪里可以找到 Python 内置程序引发的异常?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44262382/

    10-10 11:31
    查看更多