![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
golang错误处理
磨镜台
牢骚太盛防肠断,风物长宜放眼量。
展开
-
错误处理策略
成功的逻辑一般不会放在else块中而是在外层的作用域。 1.最常见的策略将错误传递下去,子例程的错误变成主例程的错误。resp, err := http.Get(url)if err != nil { return nil, err}fmt.Errorf格式化一条错误消息并返回一个新的错误值fmt.Errorf("a error") //返回一个error2.对...原创 2018-08-04 10:41:43 · 1934 阅读 · 0 评论 -
error接口和errors包
error接口: error只是一个接口类型type error interface { Error() string}构造error最简单的方法是调用errors.New,它会返回一个包含指定错误消息的新error实例:err := errors.New("EOF")但更常用是使用fmt.Errorf,它还额外提供字符串格式化功能。errors包:pa...原创 2018-08-04 10:59:51 · 1226 阅读 · 0 评论 -
一个好用的errors包
一个好用的errors包可以报出错误的位置地址"github.com/pkg/errors"demo包裹错误,打印出像panic的效果func Wrap(err error, message string) error打印错误需要%+v才能详细输出package mainimport ( "fmt" "github.com/pkg/errors" E "errors"...原创 2019-07-02 21:02:49 · 2275 阅读 · 0 评论 -
panic
panic异常指的是不应该出现问题的地方出现了问题例如:引用空指针、数组下标越界、除数为零。使用panic抛出异常,抛出异常后将立即停止当前函数的执行并运行所有被defer的函数,然后将panic抛向上一层,直至程序carsh。但是也可以使用被defer的recover函数来捕获异常阻止程序的崩溃,recover只有被defer后才是有意义的。对于异常,我们可以选择在一个合适的上游去rec...原创 2019-07-28 11:30:02 · 442 阅读 · 0 评论