在 Go 中,Panic 和 Recover 用於異常處理。 Panic 用來報告異常,Recover 用來從異常中恢復。 Panic 會停止程式執行,拋出一個 interface{} 類型的例外值。 Recover 可以從延遲函數或 goroutine 捕獲異常,傳回它拋出的 interface{} 類型的異常值。
Go 語言異常處理中的Panic 和Recover
在Go 語言中,panic
和recover
關鍵字是例外處理的重要機制。 panic
用於報告異常,而 recover
用於從異常中恢復。
Panic
panic
關鍵字用於報告一個異常條件,它會立即停止程式執行,並列印堆疊資訊。使用 panic
時,程式會拋出一個 interface{}
類型的例外。例如:
package main func main() { panic("发生了异常") }
Recover
recover
關鍵字用於從 panic
中復原。它可以從目前 goroutine 傳回一個 interface{}
類型的異常值。 recover 只能在延遲函數或 goroutine 中使用。例如:
package main import "fmt" func main() { defer func() { if r := recover(); r != nil { fmt.Println("捕获到异常:", r) } }() panic("发生了异常") }
實戰案例
假設我們有一個函數divide
,它計算兩個數的商數:
func divide(a, b int) float64 { if b == 0 { panic("除数不能为零") } return float64(a) / float64(b) }
為了處理divide
函數中可能發生的異常,我們可以使用recover
關鍵字:
func main() { defer func() { if r := recover(); r != nil { fmt.Println("捕获到异常:", r) } }() fmt.Println(divide(10, 2)) fmt.Println(divide(10, 0)) }
輸出:
5 捕获到异常: 除数不能为零
以上是Golang異常處理中的panic和recover的詳細內容。更多資訊請關注PHP中文網其他相關文章!