成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識(shí)庫 > 淺談Go語言的error類型

淺談Go語言的error類型

熱門標(biāo)簽:湛江crm外呼系統(tǒng)排名 鄭州智能語音電銷機(jī)器人價(jià)格 不封卡外呼系統(tǒng) 重慶慶云企業(yè)400電話到哪申請(qǐng) 仙桃400電話辦理 宿遷便宜外呼系統(tǒng)代理商 上海極信防封電銷卡價(jià)格 寧波語音外呼系統(tǒng)公司 地圖標(biāo)注免費(fèi)定制店

error類型是go語言的一種內(nèi)置類型,使用的時(shí)候不用特定去import,他本質(zhì)上是一個(gè)接口

 type error interface{
 Error() string //Error()是每一個(gè)訂制的error對(duì)象需要填充的錯(cuò)誤消息,可以理解成是一個(gè)字段Error
}

怎樣去理解這個(gè)訂制呢?

我們知道接口這個(gè)東西,必須擁有它的實(shí)現(xiàn)塊才能調(diào)用,放在這里就是說,Error()必須得到填充,才能使用.

比方說下面三種方式:

第一種:通過errors包去訂制error

error := errors.New("hello,error")//使用errors必須import "errors"包
if error != nil {
 fmt.Print(err)
}

來解釋一下errors包,只是一個(gè)為Error()填充的簡易封裝,整個(gè)包的內(nèi)容,只有一個(gè)New方法,可以直接看

func New(text string) error

第二種:通過fmt.Errorf()去訂制

err := fmt.Errorf("hello error")
if err != nil {
 fmt.Print(err)
}

可以說和第一種雷同了.

第三種:就是通過自定義的MyError塊去訂制了

//一個(gè)包裹了錯(cuò)誤類型對(duì)象的自定義錯(cuò)誤類型
type MyError struct {
err error 
}
//訂制Error()
func (e MyError) Error() string {
 return e.err.Error()
}
func main() {
 err:=MyError{
 errors.New("hello error"),
 }
 fmt.Println(err.Error())
}

三種方式差異都不大,輸出結(jié)果都是 hello error

實(shí)際上error只是一段錯(cuò)誤信息,真正拋出異常并不是單純靠error,panic和recover的用法以后總結(jié)。

補(bǔ)充:go error接口與errors包詳解

1 error接口

定義:

 type error interface{
 Error() string //Error()是一個(gè)方法,是每一個(gè)訂制的error對(duì)象需要填充的錯(cuò)誤消息,可以理解成是一個(gè)字段Error
}

1.1 常見調(diào)用方式

模板

n, err := Foo(0) 
 
if err != nil { 
 // 錯(cuò)誤處理 
} else { 
 // 使用返回值 n 
} 

練習(xí)1

package main
import ( 
 "fmt"
 "os"
)
func main() { 
 f, err := os.Open("/test.txt")
 if err != nil {
  fmt.Println(err)
  return
 }
 fmt.Println(f.Name(), "opened successfully")
}

[root@localhost error]# go run err3.go

open /test.txt: no such file or directory

1.2 自定義error方法

1.2.1 函數(shù)調(diào)用error

func Foo(param int)(n int, err error) { 
 // ... 
} 

1.2.2 自定義Error模板1

type fileError struct {
}
func (fe *fileError) Error() string {
 return "文件錯(cuò)誤"
}

練習(xí)1

模擬一個(gè)錯(cuò)誤

package main
import "fmt"
type fileError struct {
}
func (fe *fileError) Error() string { //自定義會(huì)覆蓋原來的Error接口
 return "文件錯(cuò)誤"
}
//只是模擬一個(gè)錯(cuò)誤
func openFile() ([]byte, error) {
 return nil, fileError{}
}
func main() {
 conent, err := openFile()
 if err != nil {
  fmt.Println(err)
 } else {
  fmt.Println(string(conent))
 }
}

[root@localhost error]# go run err1.go

文件錯(cuò)誤

1.2 自定義Error模板2

自定義中添加一個(gè)字符串

type fileError struct {
 s string
}
func (fe *fileError) Error() string {
 return fe.s
}

練習(xí)2

聲明fileError的時(shí)候,設(shè)置好要提示的錯(cuò)誤文字

package main
import "fmt"
type fileError struct {
 s string
}
func (fe *fileError) Error() string {
 return fe.s
}
//只是模擬一個(gè)錯(cuò)誤
func openFile() ([]byte, error) {
 return nil, fileError{"文件錯(cuò)誤,自定義"} 
}
func main() {
 conent, err := openFile()
 if err != nil {
  fmt.Println(err)
 } else {
  fmt.Println(string(conent))
 }
}

[root@localhost error]# go run err2.go

文件錯(cuò)誤,自定義

練習(xí)3

添加一個(gè)時(shí)間刻度

package main
import (
 "fmt"
 "time"
)
type MyError struct {
 When time.Time
 What string
}
func (e MyError) Error() string {
 return fmt.Sprintf("%v: %v", e.When, e.What)
}
func oops() error {
 return MyError{
  time.Date(1989, 3, 15, 22, 30, 0, 0, time.UTC),
  "the file system has gone away",
 }
}
func main() { 
 if err := oops(); err != nil { 
  fmt.Println(err) 
 }
}

[root@localhost error]# go run err4.go

1989-03-15 22:30:00 +0000 UTC: the file system has gone away

練習(xí)三

沒有打開文件報(bào)錯(cuò)

package main
import (
 "fmt"
 "os"
)
type PathError struct {
 Op string
 Path string
 Err error
}
func (e *PathError) Error() string { 
  return e.Op + " " + e.Path + ": " + e.Err.Error() 
} 
func main() {
 f, err := os.Open("/test.txt")
 if errObject, ok := err.(*os.PathError); ok {
 fmt.Println("錯(cuò)誤輸出:",err, "文件路徑:", errObject.Path)
 return
 }
 fmt.Println(f.Name(), "opened successfully")
} 

[root@localhost error]# go run err5.go

錯(cuò)誤輸出: open /test.txt: no such file or directory 文件路徑: /test.txt

2 errors包

2.1 獲取error包

go get github.com/pkg/errors

2.2 errors.New()

errors.New()接收合適的錯(cuò)誤信息來創(chuàng)建

先聲明再使用

l練習(xí)1

package main
import (
 "errors"
 "fmt"
)
var errNotFound error = errors.New("Not found error")
func main() {
 fmt.Printf("error: %v", errNotFound)
}

[root@localhost error]# go run errs1.go

error: Not found error

練習(xí)2

函數(shù)如何調(diào)用err

直接使用

package main
import (
 "errors"
 "fmt"
)
func Sqrt(f float64) (float64, error) {
  if f  0 {
   return 0, errors.New("math - square root of negative number")
  }else {
   return 1, errors.New("math - square root of 10")
  }
}
func main() {
 if _, err := Sqrt(-1); err != nil {
  fmt.Printf("Error: %s\n", err)
 }
}

[root@localhost error]# go run errs2.go

Error: math - square root of negative number

3 自定義error與errors.New()使用比較

比較自定義error與errors.New()函數(shù)根據(jù)需求其實(shí)各有優(yōu)點(diǎn)。

package main
import (
 "errors"
 "fmt"
)
type MsgError struct {
 Code int
 Msg string
}
func (msg *MsgError) Error() string {
 return fmt.Sprintf("%s", msg.Msg)
}
func f1(code int) (int, error) {
 if code == 1 {
 return -1, errors.New("msg test error")
 }
 return code, nil
}
func f2(code int) (int, error) {
 if code == 1 {
 return -1, MsgError{code, "struct msg test error"}
 }
 return code, nil
}
func main() {
 for _, v := range []int{1, 2, 3, 4, 5, 6} {
  if code, err := f1(v); err != nil {
 fmt.Println(err)
 } else {
 fmt.Println("success:", code)
 }
 }
 for _, i := range []int{1, 2, 3} {
 if code, err := f2(i); err != nil {
 fmt.Println(err)
 } else {
 fmt.Println("success:", code)
 }
 }
}
[root@localhost error]# go run errs3.go
msg test error
success: 2
success: 3
success: 4
success: 5
success: 6
struct msg test error
success: 2
success: 3

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • GO語言標(biāo)準(zhǔn)錯(cuò)誤處理機(jī)制error用法實(shí)例
  • Go 自定義error錯(cuò)誤的處理方法
  • golang 打印error的堆棧信息操作
  • 淺析golang開發(fā)Error的使用詳解
  • Go應(yīng)用中優(yōu)雅處理Error的技巧總結(jié)

標(biāo)簽:西雙版納 電子產(chǎn)品 遼寧 儋州 海南 物業(yè)服務(wù) 安康 青海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《淺談Go語言的error類型》,本文關(guān)鍵詞  淺談,語言,的,error,類型,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《淺談Go語言的error類型》相關(guān)的同類信息!
  • 本頁收集關(guān)于淺談Go語言的error類型的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧亚精品在线观看| 中文字幕在线免费观看| h片在线观看视频免费| 夜夜爽夜夜操| 一区二区久久久久久| 久久影视一区二区| 成人国产精品一区二区网站| 欧美一二三区在线观看| 精品久久久久久久久久久久久久| 色av男人的天堂免费在线| 野战少妇38p| 色偷偷色偷偷色偷偷在线视频| 9999热视频在线观看| 久久91精品国产91久久久| 日韩男女性生活视频| 精品日韩美女的视频高清| 天天亚洲美女在线视频| www.天堂在线| 久久亚洲AV无码专区成人国产| 性欧美xxxx视频在线观看| 在线免费视频一区二区| 欧美日韩美少妇| 日韩成人动漫在线观看| 成人亚洲视频在线观看| jlzzjlzz国产精品久久| 亚洲黄色小说网址| 国产丝袜护土调教在线视频| 国产在线免费视频| 婷婷丁香久久| julia中文字幕一区二区99在线| 日韩精品一区二区三区免费观影| 天天干天天色天天爽| 国产高清视频免费| 国产欧美三级电影| 亚洲国产日韩成人综合天堂| 999这里只有精品| 9191精品国产综合久久久久久| 亚洲免费观看高清完整| 久久欧美肥婆一二区| 久久精品美女视频网站| 欧美午夜a级限制福利片| 亚洲精品午夜国产va久久成人| 变态调教一区二区三区| www.99久久热国产日韩欧美.com| 久久精品这里有| av色综合久久天堂av色综合在| 亚洲一区二区高清视频| 亚洲国产高清aⅴ视频| 欧美中在线观看| 日韩午夜av电影| 青草青在线视频| 一区二区三区免费在线看| 亚洲欧洲国产日韩| 懂色av成人一区二区三区| 久久人人妻人人人人妻性色av| 激情一区二区三区| 五月天av影院| 中文在线天堂库| 一区二区三区 在线观看视频| 日韩成人高清| 亚洲第一精品在线| ww国产内射精品后入国产| 国内少妇毛片视频| 成人影音在线| 亚洲视频播放| 青青草成人在线观看| 成在在线免费视频| 成人做爰高清视频网站| 色狠狠av一区二区三区| 久久婷婷五月综合色国产香蕉| 熟妇人妻系列aⅴ无码专区友真希| 亚洲日本中文字幕区| 99国产在线| 国产在线一区视频| 无码成人精品区在线观看| 日韩成人在线一区| www.超碰97.com| 国产精品人成电影| 久久在线中文字幕| 中国黄色片免费看| 最新中文字幕免费| 精品人人人人| 在线a人片免费观看视频| 大片免费在线看视频| 亚洲免费电影在线| 亚洲一区二区在线视频观看| 亚洲va久久久噜噜噜| youjizz.com国产| 天天干天天干天天干天天干天天干| 中文字幕一区二区三区人妻| 日本精品一区二区三区在线播放| 免费电影日韩网站| 久久久国产精品成人免费| 国产suv精品一区| 男人女人拔萝卜视频| 日本黄色录像片| 伊人国产视频| 国产真人做爰毛片视频直播| 国产精品成av人在线视午夜片| 亚洲精品一二三**| 亚洲欧美丝袜| 天天躁日日躁狠狠躁超碰2020| 亚洲国产精品久久精品怡红院| 一本色道久久88综合亚洲精品ⅰ| 久久精品日韩| 波多野结衣高清视频| 中文字幕第一区第二区| 日韩三级一区二区| 亚洲欧美日韩高清| 亚洲图片在线综合| 91p在线观看| 日本一区网站| 五月婷婷狠狠操| 国产精品午夜av在线| 色呦呦一区二区| 波多野结衣视频免费观看| 欧美丝袜自拍制服另类| 手机亚洲第一页| 欧美理论片在线| 欧美日韩成人黄色| 好男人www在线视频| 99久久久国产精品免费调教网站| 国产精品一区免费观看| 色综合久综合久久综合久鬼88| 欧洲精品久久久久毛片完整版| 精品理论电影在线| 国产精品电影观看| 一二美女精品欧洲| 欧美丝袜第一区| 欧美视频一区二区三区…| 欧美激情久久久久久久| 日韩在线第七页| eeuss鲁片一区二区三区在线观看| 亚洲线精品久久一区二区三区| 亚洲 欧美 另类人妖| 中文字幕在线日韩| 亚洲国产91精品在线观看| 亚欧精品视频一区二区三区| 久久在线观看免费| av电影在线观看一区二区三区| 五月天激情小说| 久久久久久av无码免费网站下载| 最近中文字幕mv免费高清在线| 91美女视频网站| 91精品在线麻豆| 最新日本视频| 在线观看黄色国产| 精品视频偷偷看在线观看| 天天干天天爱天天操| 欧美综合二区| 国产精品免费久久久久久| 国产精品久久久久一区二区| 久久在精品线影院精品国产| 日本1区2区3区视频| 国产婷婷在线观看| 国产乱码精品一区二区三区中文| 久久韩国免费视频| 97视频资源在线观看| 中文字幕乱码在线人视频| а中文在线天堂| 国产精品久久久久久久久婷婷| 欧美特黄a级高清免费大片a级| 日韩精品一区中文字幕| 国产精品wwww| 亚洲一区制服诱惑| 在线观看国产精品入口男同| 午夜精品理论片| 欧美激情一区二区三区高清视频| 免费在线精品视频| 国产高潮呻吟久久| 亚洲理论在线观看| 欧美日韩精品一区二区| 国产精品一区二区三区网站| 中文字幕有码视频| 黄色春季福利在线看| 国产伦精品一区二区三区四区视频_| 精品婷婷色一区二区三区蜜桃| 在线观看中文字幕av| 九九九热精品免费视频观看网站| 99精品人妻国产毛片| 香蕉大人久久国产成人av| abab456成人免费网址| 国产精品无码天天爽视频| 欧美jizzhd欧美精品巨大| 极品av在线| 黄色片免费在线| caoporn免费在线视频| 亚洲欧美偷拍三级| 中文字幕视频三区| 亚洲欧美综合视频| 国产亚洲依依| 欧美夜福利tv在线| 日本中文字幕久久| 欧美男男video| 日本一区二区三区视频在线看| 在线视频一区二区三区四区| 成人自拍视频| 国产偷国产偷亚洲高清人白洁| 精品日本美女福利在线观看| aaa一区二区三区| 亚洲精品乱码久久久久久蜜桃动漫| 奇米影视在线99精品| 天堂综合在线播放| av漫画网站在线观看| 亚洲永久免费观看| 中文字幕欧美专区| 亚洲www啪成人一区二区麻豆| 亚洲欧美日韩一区二区三区在线| 真实原创一区二区影院| 美女撒尿一区二区三区| 污视频网站在线看| 97国产精东麻豆人妻电影| 一级欧洲av| 国产在线你懂得| fc2成人免费人成在线观看播放| 91国偷自产中文字幕久久| 黄瓜视频在线免费观看| 亚洲色图欧美视频| 欧美性猛片xxxx免费看久爱| 欧美午夜电影一区二区三区| 天天综合色天天综合| 欧美高清影院| 日韩av有码| 91中文字幕在线观看| 国产精品少妇自拍| av成人在线观看| 九色porn| 欧美18一12sex性处hd| 国产在线麻豆精品观看| 国产精品私房写真福利视频| 精品无人乱码一区二区三区| 性欧美孕妇孕交| 日本黄视频在线观看| 亚洲AV无码国产精品午夜字幕| 欧美日本精品在线| 五月天综合网站| 好吊视频一区二区三区四区| 欧美自拍资源在线| 538在线一区二区精品国产| 中文字幕国产欧美| 日本中文在线观看| 九九免费精品视频在线观看| 欧美一区二区三区喷汁尤物| 91亚洲精品久久久久久久久久久久| 99久久精品无码一区二区毛片| 人操人视频在线观看| 国产乱论精品| 第四色中文综合网| 黄色大片在线看| 国产精品国三级国产av| 日韩电影免费观看| 国产精品揄拍500视频| 欧美aa在线视频| 日韩欧美精品一区二区| 亚洲中文一区二区三区| 国产精品一区二区久久精品| 久久―日本道色综合久久| www.五月色.com| 国产日产欧美一区二区视频| 日韩av综合网站| 国产午夜精品无码一区二区| 野外性xxxxfreexxxxx欧美| 久久99国产精品久久99| 亚洲最快最全在线视频| 亚洲免费一区三区| 欧美一级二级三级蜜桃| 口述被爽到呻吟高潮自述| 91成人破解版| 欧美激情第10页| 国产在线精品91| 日韩限制级电影在线观看| 可以免费看污视频的网站在线| 中文日韩在线观看| 自拍视频在线看| 综合久久成人| 九一国产在线观看| 国产精品九九久久久久久久| 福利网址在线| 农村少妇久久久久久久| 2020国产在线| 亚洲无码久久久久| 欧美午夜精品在线| 69精品视频| 欧美性猛片xxxx免费看久爱| 91久久香蕉国产日韩欧美9色| 久久免费精品国产久精品久久久久| 日韩黄色在线免费观看| 日本婷婷久久久久久久久一区二区| 国产成人久久精品一区二区三区| 美女毛片一区二区三区四区最新中文字幕亚洲| 欧美精品一区免费| 色综合av综合无码综合网站| 国产天堂在线播放视频| 91嫩草丨国产丨精品| 高清欧美一区二区三区| 在线播放一区二区精品产| 亚洲精品午夜国产va久久成人| 中文字幕日本在线观看| 91中文字幕在线播放| 国产xxxxx| 日本成人在线一区| 国产69精品久久777的优势| www在线观看播放免费视频日本| www.超碰在线| 懂色av蜜臀av粉嫩av分享吧最新章节| 久久国产成人午夜av影院| 91高清在线免费观看| 国产高清自拍视频在线观看| 国产精品外国| 成年女人在线视频| 亚洲黄色在线| 日韩av一级电影| 亚洲欧美中文字幕在线一区| 免费一级特黄3大片视频| 中文字幕综合一区| 国产在线精品一区二区不卡了| 欧美国产日韩亚洲一区| 亚洲国产网址| 日本一区二区三区免费看| 成人黄18免费网站| 日本孕妇大胆孕交无码| 久久精品国产精品| 那种视频在线观看| 亚洲视频国产精品| www.91popny.com| 爽爽淫人综合网网站| 国产欧美中文在线| 久热国产在线|