Go: 返回false还是返回一个定制error ErrValueNotFound?
从map里面取一个值,值不存在,它会返回一个false,而不是一个定制的error ErrValueNotFound。
根据https://go.dev/blog/error-handling-and-goGo里面对error的定义是:error是用于异常情况的。我一开始的想法是:数据找不到,怎么会成为一种异常情况?
但是就在这篇文章里面,有一个例子,调用了Get函数,它没有返回bool,而是返回error,见:[高亮链接](https://go.dev/blog/error-handling-and-go#:~:text=if%20err%20%3A%3D%20datastore.Get(c%2C%20key%2C%20record)%3B%20err%20!%3D%20nil%20%7B%0A%20%20%20%20%20%20%20%20return%20%26appError%7Berr%2C%20%22Record%20not%20found%22%2C%20404%7D%0A%20%20%20%20%7D)
官方都这么写了,我还是觉得返回一个定制化的error很难受
在调用gorm的时候,如果遇到ErrRecordNotFound这种错误,你会把它和其他error分开处理,你会经常写
在调用gorm的时候,遇到了它返回gorm.ErrRecordNotFound,我会返回一个bool,然后设置err为nil
后面写多了我发现,有些场景下,记录没找到的确能算作异常情况,比如你是用session,在缓存里没找到,就是异常。这个时候你再加个bool就没有必要了
最后更新于