73

I have a function that looks like this:

def check_for_errors(result):
    if 'success' in result:
        return True

    if 'error' in result:
        raise TypeError

    return False

In successful run of this function, I should get a bool, but if there is an error I should get a TypeError- which is OK because I deal with it in another function.

My function first line looks like this:

def check_for_errors(result: str) -> bool:

My question is: Should I mention the error in my type hinting?

4

2 回答 2

97

类型提示不能说明异常。它们完全超出了该功能的范围。但是,您仍然可以在文档字符串中记录异常。

来自PEP 484 - 类型提示

例外

没有建议列出显式引发的异常的语法。目前,此功能的唯一已知用例是文档,在这种情况下,建议将此信息放在文档字符串中。

Guido van Rossum强烈反对在类型提示规范中添加异常,因为他不希望最终陷入需要检查异常(在调用代码中处理)或在每个级别显式声明的情况。

于 2017-05-31T10:29:48.467 回答
9

记录错误通常是个好主意。这意味着使用您的函数的其他开发人员将能够处理您的错误,而无需通读您的代码。

于 2017-05-31T10:29:56.617 回答