为了账号安全,请及时绑定邮箱和手机立即绑定

异常或错误代码约定

异常或错误代码约定

MMTTMM 2019-10-15 14:03:31
昨天,我与同事就首选的错误报告方法进行了激烈的辩论。主要是我们正在讨论使用异常或错误代码来报告应用程序层或模块之间的错误。您使用什么规则来决定是否抛出异常或返回错误代码以进行错误报告?
查看完整描述

3 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

在高级方面,例外;在低级的东西,错误代码。


异常的默认行为是解开堆栈并停止程序,如果我正在编写脚本,并且我寻找不在词典中的键,则可能是错误,并且我希望程序停止并让我都知道。


但是,如果我正在编写一段必须在每种可能的情况下都知道其行为的代码,那么我需要错误代码。否则,我必须知道函数中每一行都可能抛出的每个异常,才能知道其将要执行的操作。编写对每种情况(包括不愉快的情况)做出适当响应的代码既繁琐又困难,但这是因为编写无错误的代码既繁琐又困难,而不是因为您要传递错误代码。


查看完整回答
反对 回复 2019-10-15
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

我通常更喜欢异常,因为它们具有更多的上下文信息,并且可以(如果使用得当)将错误更清楚地传达给程序员。

另一方面,错误代码比异常轻巧,但难以维护。错误检查可以无意中省略。错误代码更难维护,因为您必须保留所有错误代码的目录,然后打开结果以查看抛出了什么错误。错误范围在这里可能会有所帮助,因为如果我们唯一感兴趣的是是否存在错误,则检查起来更简单(例如,HRESULT错误代码大于或等于0表示成功,小于零就是失败)。可以无意中省略它们,因为没有程序性的强迫开发人员检查错误代码。另一方面,您不能忽略异常。

总而言之,在几乎所有情况下,我都倾向于使用异常而不是错误代码。


查看完整回答
反对 回复 2019-10-15
?
哔哔one

TA贡献1854条经验 获得超8个赞

我喜欢例外,因为

  • 他们中断了逻辑流程

  • 他们受益于类层次结构,它提供了更多的功能

  • 如果使用得当,则可能表示各种各样的错误(例如,InvalidMethodCallException也是LogicException,因为这两种情况都发生在代码中的错误应在运行时之前被检测到时),并且

  • 它们可以用于增强错误(即,FileReadException类定义可以包含用于检查文件是否存在或已被锁定等的代码)


查看完整回答
反对 回复 2019-10-15
  • 3 回答
  • 0 关注
  • 458 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信