Bug 的产生, 通常分为三种类型: 逻辑漏洞, 越界访问, 条件考虑不全面.
为了便于你理解, 我以女朋友来大姨妈举例.
某日, 你收到了女朋友的一条微信, 跟你说自己来大姨妈, 肚子疼. 这时, 你要写一段文字回复, 这段回复你就可以认为是你写的一段代码.
这段代码需要达到的目的是让你的女朋友感受到你对她的爱, 增进 (至少不减少) 你俩之间的感情. 我们可以把这个目的当成你对自己提出的这段代码背后的产品需求.
1, 逻辑漏洞:
你: 我叫外卖来给你买个热饮吧.
女朋友: 滚! 你是想让我从床上趴下去给外卖小哥开门么?
分析: 低级错误, 程序执行后无法达到想要效果.
2, 越界型:
你: 我给你室友打个电话, 让她帮忙照顾下你.
女朋友: 滚, 谁让你联系我室友的.
分析: 访问了非法区域, 造成程序崩溃.
3, 条件考虑不全面:
你: 亲爱的, 我早就知道有这天, 所以暖宝宝, 热水壶, 痛经药....(此处省略一万字), 我都给你准备好了, 就在家里.
女朋友: 我现在在地铁站.
分析: 你以为你万无一失, 但你永远都不知道输入参数究竟是什么!
除了上面三种主流错误, 还有一大堆, 这里就不细说.
我跟其他答主不一样的是, 我不光要告诉你们 Bug 是如何产生的, 我还要跟大家解释我们程序员平常如何防范未知 Bug, 因为你们也看到了, Bug 就像你女朋友的微信, 你永远不知道她下一句攻击你哪个点.
所以, 这里要祭出利器: 异常捕获.
异常捕获一般依靠 try,catch 语句. 很好理解: try(尝试) 一下, 如果有问题, 直接捕获 (catch) 住, 防止程序崩溃.
什么, 你没听懂? 我这么写你可能就懂了:
女朋友: 我来大姨妈了, 好难受.
try {
你: xxx.
- }
- catch(Exception e) {
你: 对不起, 我触发了 "e", 都是我不对, 你现在选个包包, 我去给你买.
}
女朋友: 爱你!
转自 (知乎)
来源: http://www.bubuko.com/infodetail-3375004.html