Python 向调用者传递错误的最佳实践是什么?

Python 向调用者传递错误的最佳实践是什么?,python,Python,您通常应该将函数和类方法中发生的错误传递回调用方来处理吗?什么情况下你可能不会?我之所以这么问,是因为我正在创建一个模块来执行oauth,如果你从你试图访问的网站上得到否定的响应,我不确定我是否应该把它传递给来电者,或者在那里处理它。这通常取决于对两个问题的回答: 哪一层有解释错误的信息,并将其呈现给用户或开发人员 哪一层可以纠正错误,而上层无法判断错误是否发生过 逐层检查问题。找到可以捕捉、纠正和透明处理错误的地方。如果做不到这一点,请找到可以用有用的术语解释错误的地方,并用相关信息丰富错误

您通常应该将函数和类方法中发生的错误传递回调用方来处理吗?什么情况下你可能不会?我之所以这么问,是因为我正在创建一个模块来执行oauth,如果你从你试图访问的网站上得到否定的响应,我不确定我是否应该把它传递给来电者,或者在那里处理它。

这通常取决于对两个问题的回答:

  • 哪一层有解释错误的信息,并将其呈现给用户或开发人员

  • 哪一层可以纠正错误,而上层无法判断错误是否发生过

  • 逐层检查问题。找到可以捕捉、纠正和透明处理错误的地方。如果做不到这一点,请找到可以用有用的术语解释错误的地方,并用相关信息丰富错误

    通常情况下,实际遇到错误的函数既不能充分解释错误,也不能纠正错误它应该引发一个异常,将决策委托给上层,可能会将附加数据附加到错误

    当异常上升到足够高的程度时,您会发现自己处于我上面描述的两种情况之一,您可以透明地纠正错误,或者用清晰的语言报告错误,并提供跟踪原因所需的信息

    对于OAuth模块,您应该:

  • 决定重试操作是否有意义(如网络错误)
  • 确定问题的原因(例如错误的凭证),并提出一个明确表达这一点的异常

  • 这通常取决于两个问题的答案:

  • 哪一层有解释错误的信息,并将其呈现给用户或开发人员

  • 哪一层可以纠正错误,而上层无法判断错误是否发生过

  • 逐层检查问题。找到可以捕捉、纠正和透明处理错误的地方。如果做不到这一点,请找到可以用有用的术语解释错误的地方,并用相关信息丰富错误

    通常情况下,实际遇到错误的函数既不能充分解释错误,也不能纠正错误它应该引发一个异常,将决策委托给上层,可能会将附加数据附加到错误

    当异常上升到足够高的程度时,您会发现自己处于我上面描述的两种情况之一,您可以透明地纠正错误,或者用清晰的语言报告错误,并提供跟踪原因所需的信息

    对于OAuth模块,您应该:

  • 决定重试操作是否有意义(如网络错误)
  • 确定问题的原因(例如错误的凭证),并提出一个明确表达这一点的异常

  • 当我们期望用户提供某个值或输入时,我们通常
    raiseError
    。例如:如果一个程序要求用户输入一个正整数,而他们输入的是一个负整数,我们将引发一个错误,并要求他们输入一个正整数


    当用户无法处理错误时,我们会处理错误。例如:如果要访问的网站需要电子邮件验证,而用户输入的电子邮件无法识别,您可以
    提出错误
    ,并要求他们输入有效的电子邮件地址,但如果网站有搜索栏,输入的字符串未正确拆分,我们会收到
    键值错误
    ,这取决于程序员来处理。

    当我们期望用户提供某个值或输入时,我们通常会提高错误率。例如:如果一个程序要求用户输入一个正整数,而他们输入的是一个负整数,我们将引发一个错误,并要求他们输入一个正整数

    当用户无法处理错误时,我们会处理错误。例如:如果要访问的网站需要电子邮件验证,而用户输入的电子邮件无法识别,您可以
    提出错误
    ,并要求他们输入有效的电子邮件地址,但如果网站有搜索栏,输入的字符串未正确拆分,我们会收到
    键值错误
    ,由程序员来处理