Golang ialah bahasa pengaturcaraan ditaip kuat dan statik, yang dicirikan oleh konkurensi tinggi dan kecekapan tinggi. Oleh kerana Golang adalah bahasa yang serba baharu, masalah dan penyelesaian yang dihadapi semasa menggunakan Golang akan berbeza daripada bahasa lain. Artikel ini terutamanya meneroka kaedah pengendalian ralat fungsi Golang untuk membantu pembangun lebih memahami Golang.
1. Sejarah pengendalian ralat
Dalam pengaturcaraan awal, masalah ralat sering diselesaikan dengan mengembalikan nilai atau pembolehubah global. Tetapi pendekatan ini akan menjadikan kod kompleks dan sukar untuk difahami. Kemudian, kemunculan beberapa bahasa memberikan penyelesaian yang lebih baik untuk pengendalian ralat. Sebagai contoh, Java dilaksanakan melalui pengendalian pengecualian.
Di Golang, pengendalian ralat juga dikendalikan melalui jenis khusus. Nama biasa untuk jenis ini berakhir dengan ralat atau ralat. Kaedah pemprosesan ini mengambil kira kebolehbacaan kaedah terdahulu dan kestabilan kaedah yang terakhir. Di Golang, atur cara mengeluarkan nilai ralat, yang bermaksud bukan sahaja fungsi itu mempunyai ralat, tetapi juga ralat itu mesti diserahkan kepada fungsi unggul untuk diproses.
2. Penjelasan terperinci tentang jenis ralat
Di Golang, jenis ralat wujud dalam pakej ralat dalam pustaka standard. Pakej ralat menyediakan struktur yang digunakan untuk menerangkan ralat Struktur ini ditakrifkan seperti berikut:
type error interface { Error() string }
Kata kunci 'ralat' menunjukkan bahawa ini adalah jenis antara muka. Antaranya, kaedah Error() mengembalikan rentetan yang mewakili maklumat ralat. Kami boleh mengeluarkan kandungan ralat melalui fungsi Println() bagi pakej fmt. Contohnya:
err := DoSomething() if err != nil { fmt.Println("Error:", err.Error()) }
Semasa semakan ralat, kita boleh menentukan sama ada ralat adalah sama dengan sifar (iaitu, nilai lalai jenis ralat ialah sifar, ini bermakna tiada ralat). ; jika tidak nil, ini bermakna ralat telah berlaku Dan anda boleh mendapatkan maklumat ralat terperinci dengan memanggil kaedah Error().
Di Golang, terdapat dua cara pengendalian ralat: satu ialah mengembalikan nilai ralat, menunjukkan bahawa fungsi tersebut mempunyai ralat; satu lagi adalah untuk mengembalikan berbilang nilai, termasuk nilai pulangan normal dan nilai ralat . Mari kita lihat kedua-dua kaedah ini secara berasingan.
3. Kembalikan nilai ralat
Dalam bahasa Go, nilai pulangan fungsi boleh menjadi satu atau lebih. Jika jenis nilai pulangan mengandungi ralat, maka nilai pulangan mestilah nilai pulangan terakhir, jika tidak ralat akan berlaku semasa penyusunan. Contohnya ialah menggunakan fungsi os.Open() untuk membuka fail:
func Open(name string) (*File, error)
Dalam contoh ini, nilai pulangan fungsi ialah *Jenis fail dan jenis ralat. Jika ralat berlaku dalam fungsi ini, contoh ralat jenis yang tidak sifar akan dikembalikan.
Kita boleh menggunakan kaedah berikut untuk mengendalikan ralat apabila menggunakan fungsi Open():
file, err := os.Open("/path/to/file") if err != nil { log.Fatal(err) }
Seperti yang anda lihat, jika fungsi Open mengembalikan ralat, maka ralat akan direkodkan, dan keluar dari program. Ini adalah cara biasa untuk memastikan ralat dikendalikan dan program tidak meneruskan pelaksanaan.
4. Mengembalikan berbilang nilai
Dalam bahasa Go, fungsi bukan sahaja boleh mengembalikan satu nilai, tetapi juga mengembalikan berbilang nilai. Ini berguna untuk operasi tertentu seperti mengembalikan lebih banyak maklumat keadaan atau mengelakkan pengiraan berganda. Apabila kita memerlukan fungsi untuk mengembalikan berbilang nilai, kita boleh menghantarnya dengan membungkusnya dalam struktur. Walau bagaimanapun, dalam bahasa Go, cara kami yang lebih biasa ialah mengembalikan jenis primitif dan nilai jenis ralat.
Sebagai contoh, apabila menggunakan fungsi io.ReadFull(), kita boleh melihat nilai pulangan ini:
func ReadFull(r Reader, buf []byte) (n int, err error)
Fungsi di sini mengembalikan bilangan bait dibaca (n) dan ralat(err ). Cara biasa untuk menyemak sama ada operasi berjaya adalah sama seperti yang diterangkan sebelum ini:
_, err := io.ReadFull(conn, buf) if err != nil { log.Fatal(err) }
Dalam contoh ini, kami mengabaikan bilangan bait sebenar yang dibaca dan hanya menyemak jika ralat berlaku.
5. Amalan terbaik untuk pengendalian ralat
Dalam bahasa Go, terdapat beberapa amalan terbaik untuk pengendalian ralat untuk membantu kami mengendalikan ralat dengan lebih baik.
Untuk sebarang ralat yang mungkin, jangan abaikan. Ini bukan sahaja menyebabkan program ranap, tetapi ia juga boleh mengakibatkan kehilangan data.
Apabila memanggil fungsi lain, anda harus mempertimbangkan menghantar ralat yang mungkin berlaku dalam panggilan fungsi ke lapisan atas. Tidak perlu menangani ralat di dalam fungsi.
Jika fungsi perlu melaksanakan semua pengesahan input sebelum ia boleh mengendalikan ralat, maka melaporkan ralat seawal mungkin adalah sangat diperlukan .
Jangan tentukan pembolehubah ralat global. Ini boleh menjadikan kod rumit dan sukar difahami. Sebaliknya, gunakan nilai pulangan untuk menghantar maklumat ralat.
Walaupun koma bernoktah adalah pilihan dalam Go, ralat harus dikendalikan menggunakan koma bernoktah yang sesuai. Jika tidak, mudah untuk menghadapi ralat sintaks yang tidak dijangka.
6. Kesimpulan
Dalam pengendalian ralat dalam bahasa Go, kami boleh menangani ralat dengan mengembalikan nilai atau mengembalikan berbilang nilai. Walau apa pun, terdapat beberapa amalan terbaik yang perlu anda ikuti. Memahami amalan terbaik ini boleh sangat membantu dalam membina program yang lebih stabil dan boleh dipercayai. Saya harap artikel ini akan membantu perjalanan pengaturcaraan Golang anda.
Atas ialah kandungan terperinci Penyelidikan tentang kaedah pengendalian ralat fungsi Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!