97-things-every-programmer-should-know-26: 不要忽略错误

先讲一个故事:

一天晚上我正匆匆忙忙走在街道上准备去一个酒吧会见几个老朋友。我在匆忙中没注意脚下的路,我被路上的某个东西绊倒了。
我意识到腿很疼,但我急于见老朋友,所以我挣扎着站起来并继续往前走,但是当我走的越多疼痛就越加剧,所以我意识到肯定伤的不轻。
但我还是赶去了酒吧,那晚上在酒吧过的并不愉快,因为腿上的疼痛让我分心。第二天早上我去看医生,发现我的胫骨骨折了。在我跌倒起身意识到疼痛后停止了吗?没有,反而因为拖延多走了路造成了额外伤害,也许那天早晨是我这辈子最糟糕的早晨。

太多的程序员写代码就像我那糟糕的夜晚。^_^

错误,啥错误?没啥大问题,直接忽略即可!对于想开发可靠,健壮的代码而言这可不是一个好的策略。事实上,这就是懒惰。不管你认为一个错误有多不可能在你系统里发生,你都应该检查并处理它。 每次当你不这么做,你不是在节省时间,你是在为未来埋坑。

通常,我们通过以下几种方式报错:

  • 返回码(return code) : 用特殊的返回码从函数返回表示函数调用异常。通过返回码的形式特别容易被忽略。
  • 错误码(errno): 即用一个全局变量标识错误。它易被忽略,难用,会遭致诡异的异常,如多线程调用同样的函数导致变量的修改。
  • 异常对象(Exception): 高级语言加入的异常处理机制。一般不太容易忽略,但也不是一定不可以,如下列代码:
try {
  // do something...
} catch(Exception e) {
	// ignore errors.
}

上面的代码非常可怕,会掩盖事实真相,甚至是不道德的。当到生产环境

如果你忽略一个错误,假装看不到,你将会冒很大的风险,应该尽早解决错误问题。

不处理错误将会导致:

  • 脆弱的代码:代码充满令人吃惊的,难以发现的bug。
  • 不安全的代码:黑客经常利用系统错误处理能力差来侵入系统。
  • 不良的结构:如果代码中充斥着错误处理代码,那说明接口定义差。

就像你需要检查代码中所有的潜在错误,你需要通过接口暴露所有可能的错误情况。千万不要隐藏它们,假装你的服务一直工作正常。

为什么我们不想检查并处理错误?有若干种借口:

  • 错误处理会导致代码流程混乱,使得程序可读性差。
  • 这是额外的工作并且deadline快到了。
  • 我知道这个函数一定不会出问题(如果出了整个系统就是崩溃了,完全无法用了)
  • 这仅仅是示例代码,完全不用写的够严谨,达到生产级。
小结

通过故事的类比,我们需要意识到有错误就要解决,不要试图掩盖,存在侥幸心理,否则在未来的某个时间点会付出更大的代价。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值