1. 章節(jié)簡介
- Go 提供
error 接口作為錯誤處理標(biāo)準(zhǔn)方式。
- 常見方式:返回
error、自定義錯誤類型、panic/recover。
2. 知識點講解
(1) error 類型
type error interface {
Error() string
}
(2) 返回 error
import "errors"
func divide(a, b int) (int, error) {
if b == 0 {
return 0, errors.New("division by zero")
}
return a / b, nil
}
(3) 自定義錯誤
type MyError struct {
Msg string
}
func (e MyError) Error() string {
return e.Msg
}
(4) panic/recover
-
panic:程序遇到嚴重錯誤時退出。
-
recover:在
defer 中捕獲 panic,防止程序崩潰。
func mayPanic() {
panic("Something went wrong")
}
func main() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered from:", r)
}
}()
mayPanic()
fmt.Println("Program continues")
}
3. 代碼示例
package main
import (
"errors"
"fmt"
)
func divide(a, b int) (int, error) {
if b == 0 {
return 0, errors.New("division by zero")
}
return a / b, nil
}
func main() {
res, err := divide(10, 2)
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Result:", res)
}
res, err = divide(10, 0)
if err != nil {
fmt.Println("Error:", err)
}
}
4. 練習(xí)任務(wù)
- 寫函數(shù)
openFile(filename string),當(dāng)文件不存在時返回錯誤。
- 使用
panic/recover 捕獲異常,保證程序繼續(xù)運行。
- 嘗試實現(xiàn)一個自定義錯誤類型,包含錯誤代碼和消息。
5. 小結(jié)
-
error 是接口,所有錯誤都實現(xiàn) Error() 方法。
- 錯誤處理推薦方式是 返回 error,而不是異常機制。
- panic/recover 用于極端情況,不是常規(guī)錯誤處理方式。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。