Mengendalikan Panik dalam Go
Dalam Go, program boleh menghadapi panik apabila ralat yang tidak dijangka berlaku. Secara lalai, panik menghentikan pelaksanaan program. Walau bagaimanapun, adalah mungkin untuk "menangkap" panik ini dan menanganinya dengan anggun. Artikel ini memberikan gambaran keseluruhan tentang cara mengendalikan panik dalam Go.
Menangkap Panik
Go menyediakan fungsi recover() terbina dalam yang membenarkan program mengurus panik tingkah laku. Apabila panik berlaku dalam goroutine, recover() boleh digunakan untuk memintas panik dan mengembalikan nilainya.
Contoh:
Pertimbangkan kod berikut:
package main import ( "fmt" "os" ) func main() { file, err := os.Open(os.Args[1]) if err != nil { fmt.Println("Could not open file") } fmt.Printf("%s", file) }
Jika tiada hujah fail disediakan, kod ini akan panik kerana ralat indeks di luar julat. Untuk mengendalikan panik ini, kita boleh menggunakan recover() seperti berikut:
package main import ( "fmt" "os" ) func main() { // Wrap the main function in a deferred function that recovers from panics defer func() { if err := recover(); err != nil { fmt.Printf("Caught panic: %v\n", err) } }() file, err := os.Open(os.Args[1]) if err != nil { fmt.Println("Could not open file") } fmt.Printf("%s", file) }
Kini, jika program dijalankan tanpa hujah fail, ia akan menangkap panik dan mencetak mesej ralat dan bukannya menamatkannya.
Bila Menggunakan Panik
Walaupun menangkap panik boleh berguna dalam situasi tertentu, ia adalah penting untuk menggunakannya dengan bijak. Paradigma Go menekankan semakan ralat yang jelas dan panik hanya boleh digunakan untuk keadaan luar biasa di mana pemulihan tidak dapat dilaksanakan.
Atas ialah kandungan terperinci Bagaimana untuk Menangkap dan Mengendalikan Panik dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!