Go语言中的错误处理

    错误指程序中出现不正常的情况,从⽽导致程序⽆法正常执⾏。

error处理概述

  • Go语⾔中没有try…catch
  • Go 语⾔通过内置的错误类型提供了⾮常简单的错误处理机制;
  • 错误值可以存储在变量中,通过函数中返回;
  • 如果⼀个函数或⽅法返回⼀个错误,按照惯例,它必须是函数返回的最后⼀个值;
  • 处理错误的惯⽤⽅式是将返回的错误与nil进⾏⽐较;
  • nil值表示没有发⽣错误,⽽⾮nil值表示出现错误;
  • 如果不是nil,需打印输出错误。

error错误类型的本质

  • error本质上是⼀个接⼝类型,其中包含⼀个Error()⽅法。
    type error interface {
    Error() string
    }
  • 任何实现这个接⼝的类型都可以作为⼀个错误使⽤。这个⽅法提供了对Go错误处理——error的描述。

创建error对象的方式

1. errors包下的New()函数返回error对象

  • 通过errors.New()创建新的错误。
package errors
// New returns an error that formats as the given text.
func New(text string) error {
   return &errorString{text}
}
// errorString is a trivial implementation of error.
type errorString struct {
   s string
}
func (e *errorString) Error() string {
   return e.s
}

2. fmt包下的Errorf()函数返回error对象

  • fmt包下的Errorf()函数本质上还是调⽤errors.New()
// Errorf formats according to a format specifier and returns the string
// as a value that satisfies error.
func Errorf(format string, a ...interface{}) error {
	return errors.New(Sprintf(format, a...))
}

3. 创建⼀个自定义错误

实现步骤,如下:

  • 1、定义⼀个结构体,表示⾃定义错误的类型;
  • 2、让⾃定义错误类型实现error接⼝的⽅法 : Error() string
  • 3、定义⼀个返回error的函数。根据程序实际功能⽽定。

案例如下:
//myError.go



效果如下:

图(1) 自定义的错误处理机制

猜你喜欢

转载自blog.csdn.net/sanqima/article/details/108908579