猿问

异常或错误代码约定

昨天,我与同事就首选的错误报告方法进行了激烈的辩论。主要是我们正在讨论使用异常或错误代码来报告应用程序层或模块之间的错误。


您使用什么规则来决定是否抛出异常或返回错误代码以进行错误报告?


MMTTMM
浏览 488回答 3
3回答

HUX布斯

在高级方面,例外;在低级的东西,错误代码。异常的默认行为是解开堆栈并停止程序,如果我正在编写脚本,并且我寻找不在词典中的键,则可能是错误,并且我希望程序停止并让我都知道。但是,如果我正在编写一段必须在每种可能的情况下都知道其行为的代码,那么我需要错误代码。否则,我必须知道函数中每一行都可能抛出的每个异常,才能知道其将要执行的操作。编写对每种情况(包括不愉快的情况)做出适当响应的代码既繁琐又困难,但这是因为编写无错误的代码既繁琐又困难,而不是因为您要传递错误代码。

慕的地6264312

我通常更喜欢异常,因为它们具有更多的上下文信息,并且可以(如果使用得当)将错误更清楚地传达给程序员。另一方面,错误代码比异常轻巧,但难以维护。错误检查可以无意中省略。错误代码更难维护,因为您必须保留所有错误代码的目录,然后打开结果以查看抛出了什么错误。错误范围在这里可能会有所帮助,因为如果我们唯一感兴趣的是是否存在错误,则检查起来更简单(例如,HRESULT错误代码大于或等于0表示成功,小于零就是失败)。可以无意中省略它们,因为没有程序性的强迫开发人员检查错误代码。另一方面,您不能忽略异常。总而言之,在几乎所有情况下,我都倾向于使用异常而不是错误代码。

哔哔one

我喜欢例外,因为他们中断了逻辑流程他们受益于类层次结构,它提供了更多的功能如果使用得当,则可能表示各种各样的错误(例如,InvalidMethodCallException也是LogicException,因为这两种情况都发生在代码中的错误应在运行时之前被检测到时),并且它们可以用于增强错误(即,FileReadException类定义可以包含用于检查文件是否存在或已被锁定等的代码)
随时随地看视频慕课网APP
我要回答