在本教程中,我們會(huì)學(xué)習(xí)如何創(chuàng)建我們自己的自定義錯(cuò)誤,并在我們創(chuàng)建的函數(shù)和包中使用它。我們會(huì)使用與標(biāo)準(zhǔn)庫(kù)中相同的技術(shù),來(lái)提供自定義錯(cuò)誤的更多細(xì)節(jié)信息。
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的睢寧縣網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!使用 New 函數(shù)創(chuàng)建自定義錯(cuò)誤
創(chuàng)建自定義錯(cuò)誤最簡(jiǎn)單的方法是使用 errors 包中的 New 函數(shù)。
在使用 New 函數(shù) 創(chuàng)建自定義錯(cuò)誤之前,我們先來(lái)看看 New 是如何實(shí)現(xiàn)的。如下所示,是 errors 包 中的 New 函數(shù)的實(shí)現(xiàn)。
// Package errors implements functions to manipulate errors. package errors // New returns an error that formats as the given text. func New(text string) error { return &errorString{text} } // errorString is a trivial implementation of error. type errorString struct { s string } func (e *errorString) Error() string { return e.s }
New 函數(shù)的實(shí)現(xiàn)很簡(jiǎn)單。errorString 是一個(gè)結(jié)構(gòu)體類型,只有一個(gè)字符串字段 s。第 14 行使用了 errorString 指針接受者(Pointer Receiver),來(lái)實(shí)現(xiàn) error 接口的 Error() string 方法。
第 5 行的 New 函數(shù)有一個(gè)字符串參數(shù),通過(guò)這個(gè)參數(shù)創(chuàng)建了 errorString 類型的變量,并返回了它的地址。于是它就創(chuàng)建并返回了一個(gè)新的錯(cuò)誤。
現(xiàn)在我們已經(jīng)知道了 New 函數(shù)是如何工作的,我們開(kāi)始在程序里使用 New 來(lái)創(chuàng)建自定義錯(cuò)誤吧。
我們將創(chuàng)建一個(gè)計(jì)算圓半徑的簡(jiǎn)單程序,如果半徑為負(fù),它會(huì)返回一個(gè)錯(cuò)誤。
package main import ( "errors" "fmt" "math" ) func circleArea(radius float64) (float64, error) { if radius < 0 { return 0, errors.New("Area calculation failed, radius is less than zero") } return math.Pi * radius * radius, nil } func main() { radius := -20.0 area, err := circleArea(radius) if err != nil { fmt.Println(err) return } fmt.Printf("Area of circle %0.2f", area) }
在 glayground 上運(yùn)行
在上面的程序中,我們檢查半徑是否小于零(第 10 行)。如果半徑小于零,我們會(huì)返回等于 0 的面積,以及相應(yīng)的錯(cuò)誤信息。如果半徑大于零,則會(huì)計(jì)算出面積,并返回值為 nil 的錯(cuò)誤(第 13 行)。
在 main 函數(shù)里,我們?cè)诘?19 行檢查錯(cuò)誤是否等于 nil。如果不是 nil,我們會(huì)打印出錯(cuò)誤并返回,否則我們會(huì)打印出圓的面積。
在我們的程序中,半徑小于零,因此打印出:
Area calculation failed, radius is less than zero
以上就是golang中創(chuàng)建錯(cuò)誤的方法的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司其它相關(guān)文章!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。