GO語(yǔ)言標(biāo)準(zhǔn)錯(cuò)誤處理機(jī)制error用法實(shí)例
本文實(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ò)誤處理。
Error() string
}
一般情況下,如果函數(shù)需要返回錯(cuò)誤,就將 error 作為多個(gè)返回值中的最后一個(gè)(但這并非是強(qiáng)制要求)。參考模型:
// ...
}
if n, err := Foo(0); err != nil {
// 錯(cuò)誤處理
}
這就是 error 的使用方法,與其他語(yǔ)言的異常相比,Golang 的方法相對(duì)更加容易、直觀。
代碼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)
}
}
輸出結(jié)果:
錯(cuò)誤: 您輸入不是雙數(shù)
你有沒(méi)有覺(jué)得 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)
}
}
輸出結(jié)果
錯(cuò)誤: 參數(shù)不正確,因?yàn)?101"不是雙數(shù)
希望本文所述對(duì)大家的GO語(yǔ)言程序設(shè)計(jì)有所幫助。
相關(guān)文章
一篇文章說(shuō)清楚?go?get?使用私有庫(kù)的方法
這篇文章主要介紹了go?get?如何使用私有庫(kù),本文會(huì)明確指出Git?、golang的配置項(xiàng),附送TortoiseGit?+?Git混合配置,需要的朋友可以參考下2022-09-09
golang根據(jù)生日計(jì)算星座和屬相實(shí)例
這篇文章主要為大家介紹了golang根據(jù)生日計(jì)算星座和屬相的示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
Go常用標(biāo)準(zhǔn)庫(kù)之fmt的簡(jiǎn)介與使用詳解
fmt 是 Go 語(yǔ)言中的一個(gè)常用標(biāo)準(zhǔn)庫(kù),它用于格式化輸入和輸出數(shù)據(jù),這篇文章主要為大家介紹了fmt的基本使用,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-10-10
Go基礎(chǔ)教程系列之import導(dǎo)入包(遠(yuǎn)程包)和變量初始化詳解
這篇文章主要介紹了Go基礎(chǔ)教程系列之import導(dǎo)包和初始化詳解,需要的朋友可以參考下2022-04-04
Go+Redis緩存設(shè)計(jì)與優(yōu)化實(shí)現(xiàn)
本文主要介紹了Go+Redis緩存設(shè)計(jì)與優(yōu)化實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
Gin+Gorm實(shí)現(xiàn)CRUD的實(shí)戰(zhàn)
本文主要介紹了Gin+Gorm實(shí)現(xiàn)CRUD的實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02

