区分操作失败和程序员失误
操作失败
操作失败是正确编写的程序在运行时产生的错误。它并不是程序的 Bug,反而经常是其它问题:系统本身(内存不足或者打开文件数过多),系统配置(没有到达远程主机的路由),网络问题(端口挂起),远程服务(500错误,连接失败)。
程序员失误
程序员失误是程序里的 Bug。这些错误往往可以通过修改代码避免它们永远都没法被有效的处理。
例子
如果程序想要连接服务器,但是得到一个 ECONNREFUSED 错误,而这个程序没有监听套接字上的error事件,然后程序崩溃了,这是程序员的失误。连接断开是操作失败(因为这是任何一个正确的程序在系统的网络或者其它模块出问题时都会经历的),如果它不被正确处理,那它就是一个失误。
网友评论