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

2024-06-16 10:00:35 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 模块方法函数网站错误情况oauth舞蹈
2条回答

我们通常raiseError期望用户提供某个值或输入。例如:如果一个程序要求用户输入一个正整数,而他们输入的是一个负整数,那么我们就会产生一个错误,要求他们输入一个正整数。你知道吗

我们处理错误时,它不是由用户为它。例如:如果要访问的网站需要电子邮件验证,并且用户输入的电子邮件无法识别,您可以raiseError并要求他们输入有效的电子邮件地址,但是如果网站有搜索栏,并且输入的字符串没有正确地拆分以进行搜索,我们会得到一个keyValueError,则由程序员来处理。你知道吗

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

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

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

逐层检查问题。找出可以捕捉、纠正和透明处理错误的地方。如果做不到这一点,请找出哪里可以用有用的术语来解释错误,并用相关的信息来充实错误。你知道吗

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

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

对于OAuth模块,您应该:

  1. 决定重试操作是否有意义(如网络错误)
  2. 确定问题的原因(如错误的凭证),并提出一个清楚地表达这一点的异常。你知道吗

相关问题 更多 >