分析下程序里在哪些方面会出现非预期情况:
硬件、逻辑和预言。
预言是啥?好像没听过?其实它是常见的东西,如timeout,timeout就是一个预言,这段代码要在这段时间内完成。预言是最最根本的异常来源,所有其它异常都因他产生
硬件,如网络,这方面的非预期情况可以划给异常。为什么?因为有一个隐藏的预言,硬件正确。有可能用非预言定义硬件出错吗?不可能,因为硬件可能在任何时候出错。
逻辑,这个划给bug?其实这里是要细分的:客户端逻辑错误,本地逻辑错误,服务端逻辑错误
客户端逻辑错误,需要预言客户端正确吗?多数情况不是,因为可以通过检查进行分类,除非这个分类不可解(如停机问题)或不值得(考虑了性能)
本地逻辑错误,这个划给bug吧,再不划给bug没东西划给bug了
服务端逻辑错误,其实等于服务端的本地逻辑错误,这么说他是bug,可是世界上的事常常不完美,有时他是黑盒,有时他被伪装成预言(伪装成timeout很容易成功,囧),因此虽然他是bug,却常常要当做异常来处理
硬件、逻辑和预言。
预言是啥?好像没听过?其实它是常见的东西,如timeout,timeout就是一个预言,这段代码要在这段时间内完成。预言是最最根本的异常来源,所有其它异常都因他产生
硬件,如网络,这方面的非预期情况可以划给异常。为什么?因为有一个隐藏的预言,硬件正确。有可能用非预言定义硬件出错吗?不可能,因为硬件可能在任何时候出错。
逻辑,这个划给bug?其实这里是要细分的:客户端逻辑错误,本地逻辑错误,服务端逻辑错误
客户端逻辑错误,需要预言客户端正确吗?多数情况不是,因为可以通过检查进行分类,除非这个分类不可解(如停机问题)或不值得(考虑了性能)
本地逻辑错误,这个划给bug吧,再不划给bug没东西划给bug了
服务端逻辑错误,其实等于服务端的本地逻辑错误,这么说他是bug,可是世界上的事常常不完美,有时他是黑盒,有时他被伪装成预言(伪装成timeout很容易成功,囧),因此虽然他是bug,却常常要当做异常来处理