欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > go 错误处理 error

go 错误处理 error

2025/2/22 14:02:26 来源:https://blog.csdn.net/weixin_42754896/article/details/145781347  浏览:    关键词:go 错误处理 error

普通错误处理

// 包路径
package mainimport ("errors""fmt"
)func sqrt(f1, f2 float64) (float64, error) {if f2 < 0 {return 0, errors.New("error: f2 < 0")}return f1 / f2, nil
}func sqrt1(f1, f2 float64) {if re, err := sqrt(f1, f2); err == nil {fmt.Println("计算没有错误,结果为:", re)} else {fmt.Println("计算发生错误,错误信息为:", err)}
}//  main方法
func main() {// 错误机制是利用多个返回值机制实现// 计算没有错误,结果为: 1sqrt1(1.1, 1.1)// 计算发生错误,错误信息为: error: f2 < 0sqrt1(1.1, -1.1)}

自定义error

package mainimport ("log"
)// 自定义异常类型
type CustomerDefinitionError struct {message string
}// 实现Error方法,用来标记是自定义错误
// err CustomerDefinitionError 只读err
// err *CustomerDefinitionError 可以修改err
func (err *CustomerDefinitionError) Error() string {return err.message
}// 注意抛出方法
func throwUDError() error {return &CustomerDefinitionError{"错误信息!!!"}
}func main() {log.Println("main ...")err := throwUDError()log.Println(err.Error())// 类型的判断if pathErr, ok := err.(*CustomerDefinitionError); ok {log.Println("This is user definition error", pathErr)}switch vt := err.(type) {case *CustomerDefinitionError:log.Println("This is user definition error", vt)default:log.Println("other type error")}log.Println("success ..")
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词