在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
参数可以打印错误的完整堆栈信息。