error是一种接口类型
type error interface {
Error ( ) string
}
如何返回一个error
使用 errors.New("shdfkh")
,看源码
func New ( text string ) error {
return & errorString{ text}
}
type errorString struct {
s string
}
func ( e * errorString) Error ( ) string {
return e. s
}
使用 fmt.Errorf("")
自定义一个类型,并且实现error接口
不同的错误如何区分
比较字符串,不可取 单个进程使用预定义错误返回和判断,可取
package main
import (
"errors"
"fmt"
)
func main ( ) {
if err := judge ( 11 ) ; err != nil {
if err == LessThanTwoErr {
fmt. Println ( err)
return
}
if err == MoreThan10Err {
fmt. Println ( err)
return
}
}
}
var LessThanTwoErr = errors. New ( "不能小于2" )
var MoreThan10Err = errors. New ( "不能大于10" )
func judge ( n int ) error {
if n < 2 {
return LessThanTwoErr
}
if n > 10 {
return MoreThan10Err
}
return nil
}
grpc错误处理,grpc是跨进程返回错误,无法使用同一个error进行判断,所以使用状态码判断,请看 grpc状态码部分