Golang ialah bahasa yang ditaip secara statik dengan mekanisme pengendalian pengecualian yang berkuasa, tetapi setiap pengaturcara berkemungkinan menghadapi ralat dan pengecualian. Artikel ini akan meneroka cara mengendalikan ralat dan pengecualian di Golang dan memperkenalkan beberapa amalan terbaik.
Ralat dan Panik
Di Golang, ralat dan pengecualian ialah dua konsep yang berbeza. Ralat selalunya boleh diramal, situasi biasa atau operasi yang gagal, seperti membuka fail yang tidak wujud atau sambungan rangkaian yang gagal. Sebaliknya, pengecualian biasanya tidak terkawal, keadaan ralat tidak diketahui, seperti ranap program akibat limpahan memori.
Golang mempunyai mekanisme untuk kedua-dua situasi: pengendalian ralat dan pengendalian pengecualian. Apabila ralat berlaku, Golang akan mengembalikan jenis ralat. Apabila pengecualian berlaku, program akan ranap dan panik. Ini menyediakan beberapa cara yang berkesan untuk mengendalikan ralat dan pengecualian.
Pengendalian ralat Golang
Pengendalian ralat di Golang adalah berdasarkan antara muka ralat jenis, yang boleh didapati dalam dokumentasi pakej. Jenis yang melaksanakan antara muka ini mewakili ralat, biasanya rentetan yang menerangkan punca ralat. Apabila fungsi mengembalikan ralat, anda mesti menyemak sama ada ralat adalah sifar. Jika ya, operasi berjaya, jika tidak, operasi gagal dan ralat dikembalikan.
Mari kita lihat contoh mudah menggunakan pengendalian ralat Golang:
package main import ( "errors" "fmt" ) func divide(dividend, divisor int) (int, error) { if divisor == 0 { return 0, errors.New("division by zero") } return dividend / divisor, nil } func main() { result, err := divide(10, 0) if err != nil { fmt.Println(err) return } fmt.Println(result) }
akan mengeluarkan hasil: division by zero
Dalam contoh di atas, kami menentukan fungsi A divide
yang menerima dua integer. Jika pembahagi adalah sifar, fungsi mengembalikan ralat. Fungsi main
menyemak sama ada operasi berjaya dengan menyemak nilai ralat fungsi divide
dan mencetak mesej ralat jika operasi gagal.
Pengendalian pengecualian Golang
Selain pengendalian ralat, Golang juga mempunyai pengendalian pengecualian. Pengendalian pengecualian biasanya digunakan untuk mengendalikan ralat yang tidak dapat diramalkan semasa pengekodan, seperti Panik kerana kekurangan ingatan.
Mekanisme pengendalian pengecualian Golang dilaksanakan melalui fungsi terbina dalam panic() dan recover(). Apabila program memanggil fungsi panik(), program akan ranap dan mencetak mesej ralat dan surih tindanan. Jika fungsi recover() dipanggil dalam blok pernyataan tangguh, panik akan ditangkap dan program akan terus dilaksanakan.
Mari kita gunakan contoh mudah untuk menggambarkan penggunaan panik dan pulih:
package main import "fmt" func myFunc() { defer func() { if r := recover(); r != nil { fmt.Println("Recovered in myFunc", r) } }() fmt.Println("Calling Panic") panic("PANIC") fmt.Println("Returned from myFunc") } func main() { fmt.Println("Calling myFunc") myFunc() fmt.Println("Returned from myFunc") }
Hasil keluarannya ialah:
Calling myFunc Calling Panic Recovered in myFunc PANIC Returned from myFunc
Dalam contoh di atas, kita define Fungsi myFunc
dicipta, yang akan memanggil fungsi panik dan mencetuskan panik. Dalam fungsi myFunc
, kami menggunakan blok pernyataan tangguh untuk memanggil fungsi recover
, yang akan menangkap pengecualian dan menggunakannya apabila kawalan kembali kepada proses semasa. Panik dan pulih biasanya digunakan untuk mengendalikan kod rollback dan pemulihan, tetapi tidak disyorkan untuk menggunakan panic() dan recover() dalam keadaan biasa.
Amalan Terbaik Golang
Berikut ialah beberapa amalan terbaik untuk pengendalian ralat dan pengendalian pengecualian di Golang:
Kesimpulan
Di Golang, ralat dan pengendalian pengecualian adalah aspek utama yang perlu ditangani oleh mana-mana pembangun. Dalam artikel ini, kami meneroka perbezaan antara ralat dan pengecualian, dan memperkenalkan ralat dan mekanisme pengendalian pengecualian yang paling biasa digunakan di Golang. Pengetahuan ini akan membantu anda menulis kod yang boleh diselenggara dan meminimumkan kemungkinan ralat.
Atas ialah kandungan terperinci Cara golang mengendalikan ralat dan pengecualian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!