Rumah >pembangunan bahagian belakang >Golang >Amalan terbaik untuk pengendalian pengecualian dalam fungsi golang
Amalan terbaik untuk mengendalikan pengecualian fungsi dalam Go ialah mengelak daripada menggunakan panik dan sebaliknya mengembalikan objek ralat untuk memberikan maklumat yang lebih terperinci. Gunakan tangguh dan pulihkan untuk menutup sumber dengan selamat dan menangkap serta mengendalikan panik. Gunakan jenis ralat tersuai untuk menyediakan mesej ralat yang lebih khusus dan boleh dibaca. Balut ralat untuk memberikan maklumat yang lebih terperinci. Ambil tindakan yang sewajarnya berdasarkan tahap keterukan ralat. Tulis ujian unit untuk merangkumi logik pengendalian ralat. . >:
panik
akan menyebabkan atur cara keluar serta-merta dan menimbulkan ralat, yang tidak sesuai dalam kebanyakan kes. Gunakan tunda
dan recover
: tunda
membolehkan anda melakukan beberapa pembersihan sebelum fungsi kembali, manakala recover
> > Boleh menangkap ralat apabila panik berlaku.
Mengembalikan objek ralat memberikan maklumat ralat yang lebih terperinci, menjadikannya lebih mudah untuk nyahpepijat dan mengendalikan ralat.
Praktikal Contoh -contoh Fungsi berikut yang membuka dan membaca fail dan mencetak kandungannya kepada output standard:
func readFile(filename string) { f, err := os.Open(filename) if err != nil { panic(err) } defer f.Close() data, err := ioutil.ReadAll(f) if err != nil { panic(err) } fmt.Println(string(data)) }e mengaplikasikan amalan terbaik angkat angkat terbaik untuk memperbaiki fungsi ini:
panic
: panic
会导致程序立即退出并抛出错误,这对于在大多数情况下并不是理想的。defer
和 recover
: defer
允许你在函数返回之前执行一些清理操作,而 recover
可以在发生 panic 时捕获错误。实战案例
考虑以下打开和读取文件并将其内容打印到标准输出的函数:
func readFile(filename string) error { f, err := os.Open(filename) if err != nil { return err } defer func() { if err := recover(); err != nil { fmt.Println("Error:", err) } if err := f.Close(); err != nil { fmt.Println("Error closing file:", err) } }() data, err := ioutil.ReadAll(f) if err != nil { return err } fmt.Println(string(data)) return nil }
运用最佳实践
让我们应用最佳实践来改善这个函数:
panic
: 将 panic 替换为返回错误对象,以便获得更详细的错误信息。defer
和 recover
: 对于可能引发错误的操作(例如打开文件和读取文件),使用 defer
和 recover
Elakkan menggunakan panik
: tunda
dan recover
: Untuk operasi yang boleh menyebabkan ralat (seperti membuka dan membaca fail), gunakan tunda
dan pulihkan untuk menutup fail dengan selamat dan mencetak mesej ralat jika panik berlaku.
Atas ialah kandungan terperinci Amalan terbaik untuk pengendalian pengecualian dalam fungsi golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!