Rumah > Artikel > pembangunan bahagian belakang > Perbandingan pengendalian ralat dan pengendalian pengecualian dalam fungsi golang
Bahasa Go menyediakan dua mekanisme pengendalian ralat: 1. Pengendalian ralat: gunakan parameter ralat untuk mengembalikan ralat, dan pemanggil perlu mengendalikannya secara eksplisit 2. Pengendalian pengecualian: gunakan fungsi panik() dan pulih() untuk menaikkan dan tangkapan pengecualian. Senario praktikal: Pengendalian ralat sering digunakan untuk operasi fail (sifar kembali menunjukkan kejayaan, nilai bukan sifar menunjukkan ralat), dan pengendalian pengecualian sesuai untuk permintaan rangkaian (pengecualian dilemparkan apabila ralat berlaku).
Pengendalian ralat dan pengendalian pengecualian dalam bahasa Go: perbandingan dan amalan
Bahasa Go menyediakan dua mekanisme utama untuk mengendalikan ralat dalam fungsi: pengendalian ralat dan pengendalian pengecualian. Mereka mempunyai fungsi yang berbeza dan senario yang boleh digunakan, dan memahami perbezaannya adalah penting untuk menulis kod yang mantap dan boleh diselenggara.
Pengendalian Ralat
Pengendalian ralat dilakukan dengan mengembalikan ralat daripada fungsi menggunakan parameter err
. Ralat biasanya diwakili oleh nilai nil
, yang mengembalikan nilai bukan sifar jika ralat berlaku. err
参数从函数中返回错误来完成的。错误通常由值 nil
表示,如果发生错误,则返回非零值。
func myFunction() error { // ... 进行一些操作 if err != nil { return err } // 返回 nil 表示没有发生错误 return nil }
调用带有 err
参数的函数时,必须显式检查错误并根据需要进行处理。
err := myFunction() if err != nil { // 处理错误 }
异常处理
异常处理使用 panic()
和 recover()
函数。panic()
会引发异常,而 recover()
可以捕获并处理该异常。
func myFunction() { // ... 进行一些操作 if condition { panic("发生了错误") } } func main() { defer func() { if err := recover(); err != nil { // 处理异常 } } myFunction() }
实战案例
错误处理:一个打开文件的函数,会返回 nil
func openFile(filename string) (*os.File, error) { file, err := os.Open(filename) if err != nil { return nil, err } return file, nil }Apabila memanggil fungsi dengan parameter
err
, anda mesti menyemak ralat secara eksplisit dan mengendalikannya jika perlu. func makeRequest() { resp, err := http.Get("example.com") if err != nil { panic(err) } // 使用 resp 完成操作 }Pengendalian pengecualian🎜🎜Pengendalian pengecualian menggunakan fungsi
panic()
dan recover()
. panic()
membuang pengecualian dan recover()
boleh menangkap dan mengendalikan pengecualian. 🎜rrreee🎜🎜Kes praktikal🎜🎜🎜🎜Pengendalian ralat: 🎜Fungsi yang membuka fail akan mengembalikan nil
untuk menunjukkan kejayaan, dan nilai bukan sifar untuk menunjukkan ralat. 🎜rrreee🎜🎜Pengendalian pengecualian: 🎜Fungsi yang melaksanakan permintaan rangkaian dan membuang pengecualian apabila ralat ditemui. 🎜rreeeeAtas ialah kandungan terperinci Perbandingan pengendalian ralat dan pengendalian pengecualian dalam fungsi golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!