go语言学习---错误处理

男儿欲遂平生志,六经勤向窗前读。这篇文章主要讲述go语言学习---错误处理相关的知识,希望能为你提供帮助。
Go 语言通过内置的错误接口提供了非常简单的错误处理机制。
error类型是一个接口类型,这是它的定义:

type error interface Error() string

函数通常在最后的返回值中返回错误信息。使用errors.New 可返回一个错误信息:
func Sqrt(f float64) (float64, error) if f < 0 return 0, errors.New("math: square root of negative number")// 实现

在调用Sqrt的时候传递的一个负数,然后就得到了non-nil的error对象,将此对象与nil比较,结果为true,所以fmt.Println(fmt包在处理error时会调用Error方法)被调用,以输出错误,请看下面调用的示例代码:result, err:= ```
Sqrt(-1)if err != nil fmt.Println(err)

package main
import (
" fmt"
)
// 定义一个 DivideError 结构
type DivideError struct
dividee int
divider int

// 实现 error 接口
func (de *DivideError) Error() string
strFormat := < br/> Cannot proceed, the divider is zero.< br/> dividee: %d< br/> divider: 0< br/>
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()
// 正常情况 if result, errorMsg := Divide(100, 10); errorMsg == "" fmt.Println("100/10 = ", result)// 当除数为零的时候会返回错误信息 if _, errorMsg := Divide(100, 0); errorMsg != "" fmt.Println("errorMsg is: ", errorMsg)

【go语言学习---错误处理】


    推荐阅读