代码错误处理与健壮性策略
1. 代码契约与断言
在代码编写中,我们实际上是在创建某种编码契约。这个契约可能包含一些显而易见的内容,也可能包含一些类似细则的内容。以 UserSettings 类为例,如果其作者使用断言而非检查, getUiColor() 函数可能如下所示:
class UserSettings {
...
// Returns the user's chosen UI color, or null if they haven't
// chosen one.
Color? getUiColor() {
assert(hasBeenInitialized(), “Settings not initialized"); #A
...
}
}
#A The assertion will cause an error or exception to be thrown if the class is used in an invalid way.
对于代码契约中的细则,虽然强制执行它是有好处的,但最好的做法是一开始就避免出现细则。这是因为细则并不是确保其他工程师遵守契约的可靠方式,让事情变得显而易见通常是更好的方法。
2. 错误概述
代码运行的环境往往并不完美,用户可能提供无效输入,外部系统可能崩溃,代码本身也可能存在各种错误。因此,错误是不可避免的,要编写健壮可靠的代码,就必须仔细考虑错误情况。在思考错误时,需要区分软件可能恢复的错误和无法恢复的错误
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



