@@ -1,58 +0,0 @@ 17.error接口 | 凤凰涅槃进阶之路

17.error接口

Abel sun2023年1月6日约 275 字小于 1 分钟

17.error接口

1,概述

Go语言引入了一个关于错误处理的标准模式,即error接口,它是Go语言内建的接口类型,该接口的定义如下:

type error interface {
    Error() string
}

Go语言的标准库代码包errors为用户提供如下方法:

package errors

type errorString struct { 
    text string 
}

func New(text string) error { 
    return &errorString{text} 
}

func (e *errorString) Error() string { 
    return e.text 
}

另一个可以生成error类型值的方法是调用fmt包中的Errorf函数:

package fmt
import "errors"

func Errorf(format string, args ...interface{}) error {
    return errors.New(Sprintf(format, args...))
}

2,error接口的使用

1,简单示例

package main

import "fmt"
import "errors"

func main() {
 //先使用fmt包内的错误方法
 //var err1 error = fmt.Errorf("s%","this is normal err1") 等价于下边的
 err1 := fmt.Errorf("%s", "this is normal err1")
 fmt.Println("err1 = ", err1)

 //或者直接使用error包
 err2 := errors.New("this is normal err2")
 fmt.Println("err2 = ", err2)

}

2,如何应用

package main

import "fmt"
import "errors"

func MyDiv(a, b int) (result int, err error) {
 err = nil
 if b == 0 {
  err = errors.New("分母不能为0")
 } else {
  result = a / b
 }
 return
}

func main() {
 result, err := MyDiv(10, 0)
 if err != nil {
  fmt.Println("err = ", err)
 } else {
  fmt.Println("result = ", result)
 }

}
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.9.1