在作数据库的读写操作时大家有没过一种奇怪的焦虑感?
2.如果不符合约定,则先写日志,后抛异常。
你需要明确你的模块的接口和职责,我猜测你的焦虑是由于对接口定义的不清晰, 另外不存在就创建很容易掩盖其他地方的错误,造成后期问题定位的更大问题。
可以看一下 [fail fast]( https://en.wikipedia.org/wiki/Fail-fast)。
另外你这些所谓的多余的代码有测试代码吗?能在测试环境跑过吗?不要去写不可测的代码,因为你不知道你所谓的多加的处理是否正确。(尽管你本意是让系统更 robust,但是增加复杂度和降低可读性来换取不知正确性的容错处理得不偿失)
// 从数据库中读一行记录
xxx ,err := dao.Find()xxx
// 出现错误错咋办
if err != nil
// 处理拿不到的错误
if err = ErrNotFound
// 处理其他奇奇怪怪的错误
else{
}
// json 序列化一下,反序列化出错又咋办
err = Unmarshal()
求求 go 语言的老大爷们 早点出错误一把梭方案吧,我知道这样写确实能方便处理错误,但是写业务写多了,实在是非常崩溃啊
假设某记录不存在,那么你在访问模型类(假设用 orm )的成员的时候(也可以主动检查)就会抛出空引用异常,然后就可以查看 log,排查以上三条中的哪一条出了问题。
站在普通成员的角度,通常只有第一条是你的锅,那么就在业务代码中做足测试,并且在业务代码中加上(适量的)判断约定条件是否成立的语句。
站在