Rumah > Artikel > pembangunan bahagian belakang > Lanjutkan keupayaan pengendalian pengecualian Golang
Cara untuk melanjutkan keupayaan pengendalian pengecualian Go termasuk menentukan jenis ralat tersuai untuk memberikan maklumat tambahan. Gunakan kata kunci panik untuk membuang pengecualian untuk mengganggu program dan lulus nilai ralat. Tulis pengendali ralat menggunakan fungsi pulih untuk mengendalikan pengecualian yang dilemparkan dan menyambung semula pelaksanaan program.
Keupayaan pengendalian pengecualian Go lanjutan
Mekanisme pengendalian pengecualian bahasa Go menyediakan cara yang mudah dan berkesan untuk mengendalikan ralat masa jalan. Walau bagaimanapun, tingkah laku lalainya mungkin terlalu terhad untuk sesetengah senario. Artikel ini akan melihat beberapa cara untuk melanjutkan keupayaan pengendalian pengecualian Go, termasuk menggunakan jenis ralat tersuai, pengecualian lontaran dan pengendali ralat menulis.
Jenis ralat tersuai
Bahasa Go membolehkan anda menentukan jenis ralat anda sendiri, yang boleh membantu meningkatkan kebolehbacaan dan kebolehselenggaraan kod anda. Jenis ralat tersuai boleh membawa maklumat tambahan untuk membantu penyahpepijatan dan penyelesaian masalah.
type MyError struct { msg string } func (e MyError) Error() string { return e.msg } func someFunc() (int, error) { if somethingWrong { return 0, MyError{"Something went wrong!"} } return 1, nil }
Lemparkan pengecualian
Dalam Go, kata kunci panic
关键字用于抛出异常。异常会中断程序的正常执行,并传递一个值来表示错误。
func someFunc() { if somethingWrong { panic("Something went wrong!") } }
编写错误处理程序
Go 语言提供了 recover
函数来恢复从异常中抛出的错误。它可以将异常转换为 error
func main() { defer func() { if err := recover(); err != nil { // 处理错误 } }() someFunc() }
Pengendali Ralat Penulisan
Bahasa Go menyediakan fungsirecover
untuk memulihkan ralat yang dilemparkan daripada pengecualian. Ia menukar pengecualian kepada jenis error
dan membolehkan program mengendalikannya. package main import ( "fmt" "net/http" ) type ServerError struct { code int message string } func (e ServerError) Error() string { return fmt.Sprintf("Error %d: %s", e.code, e.message) } func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { if somethingWrong { http.Error(w, "Internal Server Error", http.StatusInternalServerError) return } // 其它代码 }) http.ListenAndServe(":8080", nil) }
Satu kes praktikal
🎜🎜Berikut ialah kes praktikal yang menunjukkan cara menggunakan jenis ralat tersuai dan pengendali ralat untuk mengendalikan ralat dalam pelayan web: 🎜rrreee🎜Dengan memperluaskan keupayaan pengendalian pengecualian Go, anda boleh mencipta lebih mantap , aplikasi yang lebih boleh diselenggara. 🎜Atas ialah kandungan terperinci Lanjutkan keupayaan pengendalian pengecualian Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!