本文實(shí)例講述了GO語(yǔ)言標(biāo)準(zhǔn)錯(cuò)誤處理機(jī)制error用法。分享給大家供大家參考。具體分析如下:
在 Golang 中,錯(cuò)誤處理機(jī)制一般是函數(shù)返回時(shí)使用的,是對(duì)外的接口,而異常處理機(jī)制 panic-recover 一般用在函數(shù)內(nèi)部。
error 類型介紹
error 類型實(shí)際上是抽象了 Error() 方法的 error 接口,Golang 使用該接口進(jìn)行標(biāo)準(zhǔn)的錯(cuò)誤處理。
if n, err := Foo(0); err != nil {
// 錯(cuò)誤處理
}
代碼1:經(jīng)典使用方法
import (
"errors"
"fmt"
)
func requireDual(n int) (int, error) {
if n&1 == 1 {
return -1, errors.New("您輸入不是雙數(shù)") //生成一個(gè)簡(jiǎn)單的 error 類型
}
return n, nil
}
func main() {
if result, err := requireDual(101); err != nil {
fmt.Println("錯(cuò)誤:", err)
} else {
fmt.Println("結(jié)果:", result)
}
}
錯(cuò)誤: 您輸入不是雙數(shù)
你有沒有覺得 Golang 的這種錯(cuò)誤的處理機(jī)制非常的簡(jiǎn)潔啊,呵呵!
代碼2:擴(kuò)充下上面的代碼,帶自定義參數(shù)的錯(cuò)誤輸出
import (
"fmt"
)
type dualError struct {
Num int
problem string
}
func (e dualError) Error() string {
return fmt.Sprintf("參數(shù)不正確,因?yàn)?"%d/"不是雙數(shù)", e.Num)
}
func requireDual(n int) (int, error) {
if n&1 == 1 {
return -1, dualError{Num: n}
}
return n, nil
}
func main() {
if result, err := requireDual(101); err != nil {
fmt.Println("錯(cuò)誤:", err)
} else {
fmt.Println("結(jié)果:", result)
}
}
錯(cuò)誤: 參數(shù)不正確,因?yàn)?quot;101"不是雙數(shù)
希望本文所述對(duì)大家的GO語(yǔ)言程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答
圖片精選