溫馨提示×

Go中怎么遍歷和處理錯誤堆棧

go
小億
91
2024-04-03 09:37:02
欄目: 編程語言

在Go語言中可以使用errors.New()函數(shù)創(chuàng)建一個新的錯誤,并使用fmt.Errorf()函數(shù)格式化錯誤信息。Go中的錯誤處理通常采用if語句結(jié)構(gòu),通過判斷錯誤是否為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()函數(shù)返回一個新創(chuàng)建的錯誤。在doSomething()函數(shù)中調(diào)用doSomethingElse()函數(shù),如果doSomethingElse()函數(shù)返回錯誤,則在doSomething()函數(shù)中將其包裝為一個新的錯誤,然后返回。在main()函數(shù)中調(diào)用doSomething()函數(shù)并判斷返回的錯誤是否為nil,如果不為nil,則打印錯誤信息和堆棧信息。

使用%+v參數(shù)可以打印錯誤的完整堆棧信息。

0