Mengambil dan Menyimpan Susun Tindanan Panik
Panik dalam Go menghasilkan surih tindanan berharga yang memberikan cerapan penyahpepijatan. Walau bagaimanapun, pemulihan daripada panik hanya mengembalikan mesej ralat yang tidak mempunyai maklumat peringkat baris terperinci.
Untuk menangani had ini, pakej masa jalan/nyahpepijat menawarkan penyelesaian. Begini cara anda boleh menyimpan surih tindanan daripada panik sebagai pembolehubah:
package main import ( "fmt" "runtime/debug" ) func main() { defer func() { if r := recover(); r != nil { stacktrace := string(debug.Stack()) fmt.Println("Stacktrace from panic:", stacktrace) } }() var mySlice []int j := mySlice[0] // panic fmt.Printf("Hello, playground %d", j) // unreachable code }
Output:
Stacktrace from panic: goroutine 1 [running]: runtime/debug.Stack(0x1042ff18, 0x98b2, 0x17d048, 0x17d1c0) /usr/local/go/src/runtime/debug/stack.go:24 +0xc0 main.main.func1() /tmp/sandbox973508195/main.go:11 +0x60 panic(0x17d048, 0x17d1c0) /usr/local/go/src/runtime/panic.go:665 +0x260 main.main() /tmp/sandbox973508195/main.go:16 +0x60
Kod ini menunjukkan cara untuk menangkap surih tindanan sekiranya berlaku panik, menyediakan butiran baris demi baris yang memudahkan penyahpepijatan yang berkesan.
Atas ialah kandungan terperinci Bagaimana untuk Menyimpan Stacktraces Panik dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!