Go語言的異常處理之errors,panic, recover
摘要:
error介面:原始碼
Go語言引入了一個關於錯誤處理的標準模式,即error介面,它是Go語言內建的介面型別,該介面的定義如下:
type error interface {
Error() string
}
Go語言的標準庫程式碼包errors為使用者提供如下方法:
pack...
error介面:原始碼
Go語言引入了一個關於錯誤處理的標準模式,即error介面,它是Go語言內建的介面型別,該介面的定義如下: type error interface { Error() string } Go語言的標準庫程式碼包errors為使用者提供如下方法: package errors type errorString struct { text string } func New(text string) error { return &errorString{text} } func (e *errorString) Error() string { return e.text } 另一個可以生成error型別值的方法是呼叫fmt包中的Errorf函式: package fmt import "errors" func Errorf(format string, args ...interface{}) error { return errors.New(Sprintf(format, args...)) }
示例:
// code_027_error_panic_recover project main.go package main import ( "errors" "fmt" ) //Go語言引入了一個關於錯誤處理的標準模式,即error介面,它是Go語言內建的介面型別,New, Error, Errorf方法 func Divide(a, b float64) (result float64, err error) { if b == 0 { result = 0.0 err = errors.New("runtime error:divide by zezo") return } result = a / b err = nil return } func main() { var err1 error = errors.New("a normal err1") fmt.Println(err1) var err2 error = fmt.Errorf("%s", "normal err2") fmt.Println(err2) r, err := Divide(10.0, 0) if err != nil { fmt.Println(err) //報錯,錯誤處理 } else { fmt.Println(r) //使用返回值 } }
未完待續。。。