当我的golang应用程序恐慌时,它正在打印例程堆栈跟踪和退出。我想知道是否有很好的方法来获得进一步处理的恐慌输出。重定向stderr是不够的,因为有人想在那里放一些错误日志。我想只获得恐慌输出。
答案 0 :(得分:2)
您可以使用runtime.Stack
功能获取格式化的堆栈跟踪。通过传递true
作为第二个参数,您可以看到所有gouroutines的堆栈跟踪。
答案 1 :(得分:0)
1 package main
2
3 import (
4 › "fmt"
5 )
6
7 func main() {
8 › defer func() {
9 › › if r := recover(); r != nil {
10 › › › fmt.Println("panic:", r)
11 › › }
12 › }()
13
14 › test := []int{1, 2, 3}
15 › fmt.Println(test[5])
16
17 }
使用延迟和恢复。