繁体   English   中英

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

[英]What is best practice regarding passing errors to the caller?

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

它通常取决于以下两个问题的答案:

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

  2. 哪一层可以纠正错误,而上层无法告知错误曾经发生过?

逐层检查问题。 查找可以在哪里捕获,纠正和透明处理错误。 失败的话,找到可以用有用的术语解释错误的地方,并丰富相关的信息。

通常情况下,实际上遇到错误的函数无法充分说明或纠正错误。 它应该引发异常,将决策委派给上层,并可能将附加数据附加到error

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

对于OAuth模块,您应该:

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

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

当错误由用户决定时,我们将处理错误。 例如:如果要访问的网站需要验证电子邮件,并且用户输入的电子邮件未被识别,则您raiseError并要求他们输入有效的电子邮件地址,但是如果网站具有搜索栏,并且输入的字符串没有为搜索进行适当拆分,我们得到了keyValueError ,这取决于程序员来处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM