go错误处理

在代码中显式的检查错误,而非忽略错误。

package main

import "fmt"

// 错误error是一个接口
//type error interface {
//	Error() string
//}

// 自定义一些我们的错误,统一返回结果,处理全局返回的,ERR
type R struct {
	msg  string
	code int
	//可以定义多个参数,方便排错
	data []string
}

// 后面自己去定义一些用户相关操作这边接受的都是一个指针对象
// func (调用者) Error(参数) 返回值
func (r *R) Error() string {
	//return ""
	return fmt.Sprintf("错误信息:%s, 代码:%d\n", r.msg, r.code)
}

// 错误自己的方法,提高操作效率
func (r *R) ok() string {
	return "success"
}

// error的使用,如果函数或方法中有预期的错误,都需要抛出
func testErr(i int) (int, error) {
	//这里可以是一种错误,如订单错误
	if i != 0 {
		return 0, &R{"错误数据", 500, nil}
	}
	return i, nil
}
func main() {
	//假设这个方法返回了多个错误
	i, err := testErr(1)
	if err != nil {
		fmt.Println(err)
		//用断言判断是不是自己构造的错误类型
		e, ok := err.(*R)
		if ok {
			fmt.Println(e.msg)
			fmt.Println(e.code)
			//可以返回给前端的接口
		}
	}
	fmt.Println(i)

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值