Gorutin, benang ringan dalam Go, tingkatkan konkurensi dan tak segerak. Walau bagaimanapun, panik rutin boleh mengganggu kestabilan program. Artikel ini meneroka pemulihan daripada panik dalam goroutine untuk menghantar laporan ralat kepada perkhidmatan pelaporan ranap seperti Sentry atau Raygun.
Masalah:
Bagaimana panik daripada gorouti kanak-kanak boleh ditangkap dalam rutin utama untuk memudahkan kesilapan melaporkan?
Jawapan:
Gorotin tidak dapat pulih daripada panik dalam gorouti lain. Penyelesaian idiomatik ialah menyuntik panggilan recover() ke dalam goroutine kanak-kanak menggunakan fungsi tertunda.
Cara Idiomatik untuk Memulihkan Panik:
Contoh Menggunakan Fungsi Pembungkus:
func wrap(f func()) { defer func() { if r := recover(); r != nil { fmt.Println("Caught:", r) } }() f() }
Penggunaan:
go wrap(func() { panic("catch me") })
Kebaikan Fungsi Pembungkus Pendekatan:
Nota:
Panik harus ditangani dalam goroutine di mana ia berlaku. Menggunakan fungsi pembalut membolehkan pemulihan, tetapi goroutine masih ditamatkan.
Atas ialah kandungan terperinci Bagaimana Saya Boleh Pulih daripada Panik dalam Go Goroutines dan Laporkan Ralat kepada Perkhidmatan Seperti Sentry?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!