温馨提示×

Go中怎么遍历和处理错误堆栈

go
小亿
87
2024-04-03 09:37:02
栏目: 编程语言

在Go语言中可以使用errors.New()函数创建一个新的错误,并使用fmt.Errorf()函数格式化错误信息。Go中的错误处理通常采用if语句结构,通过判断错误是否为nil来处理错误。

以下是一个示例代码,演示如何遍历和处理错误堆栈:

package main

import (
	"errors"
	"fmt"
)

func main() {
	err := doSomething()
	if err != nil {
		fmt.Println("Error:", err)
		// 打印错误的堆栈信息
		fmt.Printf("%+v\n", err)
	}
}

func doSomething() error {
	err := doSomethingElse()
	if err != nil {
		return fmt.Errorf("doSomething failed: %w", err)
	}
	return nil
}

func doSomethingElse() error {
	return errors.New("something went wrong")
}

在上面的示例中,doSomethingElse()函数返回一个新创建的错误。在doSomething()函数中调用doSomethingElse()函数,如果doSomethingElse()函数返回错误,则在doSomething()函数中将其包装为一个新的错误,然后返回。在main()函数中调用doSomething()函数并判断返回的错误是否为nil,如果不为nil,则打印错误信息和堆栈信息。

使用%+v参数可以打印错误的完整堆栈信息。

0