【go语言】error错误机制及自定义错误返回类型

简介

Go 语言通过内置的 error 接口来处理错误,该接口定义如下:

type error interface {
    Error() string
}

这意味着任何实现了 Error() 方法的类型都可以作为错误类型。在 Go 中,通常使用 errors 包的 New 函数来创建简单的错误:

package main

import (
	"errors"
	"fmt"
)

func divide(a, b int) (int, error) {
	if b == 0 {
		return 0, errors.New("division by zero")
	}
	return a / b, nil
}

func main() {
	result, err := divide(10, 0)
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	fmt.Println("Result:", result)
}

自定义错误类型

通过自定义两个错误变量,有利于判断错误类型

通常我们判断是否存在错误而不是判断不存在错误,有利于尽早失败避免嵌套

package main

import (
	"errors"
	"fmt"
)

var DivisionByZero = errors.New("除0错误")
var LessThanZero = errors.New("小于0错误")

func divide(a, b int) (int, error) {
	if b == 0 {
		return 0, DivisionByZero
	}
	if a < 0 {
		return 0, LessThanZero
	}
	return a / b, nil
}

func main() {
	result, err := divide(-1, 10)
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	fmt.Println("Result:", result)
}

与其他语言不同点

  • 没有异常机制
  • error类型实现了error接口

源码分析看error类型:只需要实现Error方法就满足error接口的要求即为一个错误类

【go语言】error错误机制及自定义错误返回类型_第1张图片

  • 可以通过errors.New()快速创建错误实例

errors包内的一部分,定义了New函数和一个errorString错误类型,用于快速创建和表示简单的错误。

  1. New 函数是一个工厂函数,用于创建一个新的错误。它接受一个字符串参数 text,该字符串表示错误的文本描述。每次调用 New 都会返回一个新的错误对象,即使传递相同的文本描述,它们也是不同的错误对象。

  2. errorString 类型:errorString 是一个简单的实现了 error 接口的类型,它只有一个字符串字段 s 表示错误的文本描述

【go语言】error错误机制及自定义错误返回类型_第2张图片

你可能感兴趣的:(go,golang,开发语言,后端)