Learn Golang in Days - Day 15-Go错误处理
简介
- Go语言通过内置错误接口提供了简单的错误处理机制
- error类型是一个接口类型,它的定义如下
type error interface { Error() string }
例子
package main import "fmt" import "errors" func main() { //var f = 3.4 //正确 var f float32 = -2.0 var n, err = sqrt(f) if err != nil { fmt.Printf("error, %s\n", err) return } fmt.Printf("sqrt(%f) = %f\n", f, n) } func sqrt(f float32) (float32, error) { if f < 0 { fmt.Printf("err|| math,f < 0\n") return 0, errors.New("math,f < 0") } return f * f, nil }
复杂例子
- 定义结构体,实现Error接口
package main import "fmt" //定义结构体 type DivideError struct { dividee int divider int } //定义错误接口 func (de *DivideError) Error() string { strFormat := ` cannot proceed, the divider is zero. dividee: %d divider: 0 ` return fmt.Sprintf(strFormat, de.dividee) } //定义`int`类型除法运算的函数 func Divide(varDividee int, varDivider int) (result int, errorMsg string) { if varDivider == 0 { dData := DivideError{ dividee: varDividee, divider: varDivider, } errorMsg = dData.Error() return } else { return varDividee / varDivider, "" } } func main() { fmt.Println("-----正常情况-------") //正常情况 if result, errorMsg := Divide(100, 10); errorMsg == "" { fmt.Println("100/10 = ", result) } fmt.Println("-----异常情况-------") //当被除数为0的时候会返回错误信息 if _, errorMsg := Divide(100, 0); errorMsg != "" { fmt.Println("errorMsg is: ", errorMsg) } }
以上所述就是小编给大家介绍的《Learn Golang in Days - Day 15-Go错误处理》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
零基础学Java Web开发
刘聪 编 / 机械工业出版社 / 2008-1 / 59.00元
《零基础学Java Web开发:JSP+Servlet+Sfruts+Spring+Hibernte》全面讲解Java Web应用开发的编程技术,并详细介绍Java Web开发中各种常用的技术,可作为Java Web开发技术的学习指南。 《零基础学Java Web开发:JSP+Servlet+Sfruts+Spring+Hibernte》共17章,分为3篇,其中第1~12章是基础篇,讲解了......一起来看看 《零基础学Java Web开发》 这本书的介绍吧!