将错误传递给调用者的最佳做法是什么?

时间:2016-02-23 18:07:38

标签: python

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

2 个答案:

答案 0 :(得分:3)

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

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

  2. 哪一层可以纠正错误,上层无法告诉错误?

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

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

    当异常爬得足够高时,您会发现自己处于上述两种情况之一,您可以透明地纠正错误或以清晰的语言报告,并提供跟踪所需的信息事业发展。

    对于您的OAuth模块,您应该:

    1. 决定重试动作是否有意义(例如网络错误)
    2. 确定问题的原因(例如错误的凭证),并提出一个明确传达的异常。

答案 1 :(得分:1)

当我们期望来自用户的特定值或输入时,我们通常raiseError。例如:如果程序要求用户输入正整数并输入负整数,我们会引发错误并要求他们输入A POSITIVE INTEGER。

我们处理错误,因为错误不适合用户。例如:如果要访问的网站需要验证电子邮件并且用户输入的电子邮件无法识别,则您raiseError并要求他们输入有效的电子邮件地址,但如果该网站有搜索栏并且放入的字符串在搜索时没有正确分割,我们得到keyValueError,由程序员来处理它。