Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah fungsi pemulihan dalam fungsi golang dilaksanakan?
Fungsi pulih dalam bahasa Go dilaksanakan melalui penjadual untuk mengurus rekod panik dalam goroutine, yang digunakan untuk menangkap dan mengendalikan ralat yang tidak dijangka. Ia hanya menangkap panik dalam goroutine semasa dan menggunakan penyataan tangguh untuk melaksanakan fungsi pemulihan sebelum fungsi kembali berfungsi. Fungsi pemulihan menerima nilai panik jenis antara muka{} dan mencetak mesej ralat yang lebih mesra.
Cara fungsi pemulihan dalam fungsi Go dilaksanakan
Fungsi recover
dalam bahasa Go membolehkan anda pulih daripada panik daripada menjalankan goroutine. Ia sangat berguna dalam menangkap dan mengendalikan ralat yang tidak dijangka. recover
函数允许从正在运行的 goroutine 中恢复 panic。它在捕获和处理意外错误方面非常有用。
实现
recover
的实现基于 Go 语言的调度程序。调度程序负责管理 goroutine 的执行。它维护着一个 panic 记录,其中存储了最新发生的 panic 值。
当 panic 发生时,调度程序将 panic 值保存在 panic 记录中,并终止当前正在执行的 goroutine。然后,它将控制权交给将该 goroutine 标记为 "dead" 的 runtime。
如果其他 goroutine 正在等待该 goroutine 退出,它们将收到一个 Recover
消息。该消息包含 panic 记录中的 panic 值。
实战案例
假设我们有一个可能引发 panic 的函数:
func DivideByZero(x, y int) { if y == 0 { panic("division by zero") } fmt.Println(x / y) }
我们可以使用 recover
从 panic 中恢复,并打印一个更友好的错误消息:
func main() { defer func() { if err := recover(); err != nil { fmt.Println("Error:", err) } }() DivideByZero(10, 0) }
输出:
Error: division by zero
注意
defer
语句用于在函数返回之前运行恢复函数。interface{}
Recover
. Mesej mengandungi nilai panik daripada rekod panik. 🎜🎜🎜Kes praktikal🎜🎜🎜Andaikan kita mempunyai fungsi yang boleh menyebabkan panik: 🎜rrreee🎜Kita boleh menggunakan recover
untuk pulih daripada panik dan mencetak mesej ralat yang lebih mesra: 🎜rrreee🎜Output :🎜rrreee🎜🎜Nota 🎜🎜tunda
pernyataan digunakan untuk menjalankan fungsi pemulihan sebelum fungsi kembali. 🎜🎜Fungsi pemulihan ialah fungsi tanpa nama yang memerlukan parameter jenis antara muka{}
untuk menerima nilai panik. 🎜🎜Fungsi pemulihan hanya menangkap panik dalam goroutine semasa. Ia tidak dapat menangkap panik dalam goroutine lain. 🎜🎜Atas ialah kandungan terperinci Bagaimanakah fungsi pemulihan dalam fungsi golang dilaksanakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!