Pengendalian panik dalam Go melibatkan pencetakan mesej ralat diikuti dengan timbunan panggilan. Walau bagaimanapun, tingkah laku lalai ini sering mengaburkan sumber sebenar ralat, menjadikan penyahpepijatan mencabar.
Pertimbangkan coretan kod berikut:
value, err := some3rdpartylib.DoSomething() if err != nil { panic(err) }
Jika ralat bukan nol, mesej panik yang terhasil akan menyertakan penjelasan ralat tetapi bukan baris kod khusus yang menyebabkan ralat dikembalikan.
Untuk mengesan ralat kembali ke sumbernya, satu pilihan ialah menggunakan pakej ralat. Dengan melaksanakan kaedah StackTrace() dalam jenis ralat anda, anda boleh mengakses surih tindanan yang dikaitkan dengan ralat.
type stackTracer interface { StackTrace() errors.StackTrace } err, ok := err.(stackTracer) // Check if error implements stackTracer if !ok { // Handle case where error doesn't implement stackTracer } stack := err.StackTrace() fmt.Println(stack) // Print the stack trace
Selain itu, terdapat pihak ketiga yang lain perpustakaan yang berkembang pada pengendalian ralat lalai Go keupayaan:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Jejak Tindanan yang Lebih Terperinci untuk Penyahpepijatan Panik yang Lebih Mudah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!