日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

go语言中错误的处理和实现自己的错误处理类型

發布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 go语言中错误的处理和实现自己的错误处理类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
package mainimport ("errors""fmt" )func main() {/*錯誤:在可能出現問題的地方出現問題, 如打開一個文件打開失敗是意料之中的事情異常:在不該出現錯誤的地方出現錯誤, 如出現空指針,意料之外的情況*///exec.Command("pwd")//exec.Command("ps")//f, err := os.Open("test.txt")//if err != nil {// log.Fatal(err) // print + exit()// //fmt.Println(err)//}//fmt.Println(f.Name(), "打開成功.....")-------------------/*error 內置了數據類型,內置的接口定義了方法:Error() string// The error built-in interface type is the conventional interface for// representing an error condition, with the nil value representing no error.type error interface {Error() string}*/err1 := errors.New("創建測試的錯誤處理函數")fmt.Println(err1)fmt.Printf("%T\n", err1)//另外一個創建錯誤的方法err2 := fmt.Errorf("錯誤的信息:%d", 100)fmt.Println(err2)fmt.Printf("%T\n", err2)fmt.Println("--------------------")err3 := checkAge(-30)if err3 != nil {fmt.Println(err3)return}fmt.Println("程序 go on")fmt.Println("errno demo") } func checkAge(age int) (err error) {if age < 0 {//return errors.New("年齡不合法")err = fmt.Errorf("你給的年齡是%d,不合法", age)return}fmt.Println("年齡是:", age)return nil }

自定義結構體中實現對錯誤接口的實現
可以看到error接口中只有Error一個函數
areaError實現了Error函數,那么按照接口的特性,

func main() {radius := -3.8area, err := circleArea(radius)if err != nil {//err.Error()// err 是error接口類型,那么Println(err)中會調用 func (e *areaError) Error() string // 并輸出 areaError結構體的信息,有助于查看出錯的原因fmt.Println(err)return}fmt.Println("圓形的面積是:", area)fmt.Println("errno demo") } package mainimport ("fmt""math" )func main() {radius := -3.8area, err := circleArea(radius)if err != nil {//err.Error()fmt.Println(err)return}fmt.Println("圓形的面積是:", area)fmt.Println("errno demo") }// 定義一個結構體,表示錯誤的類型 type areaError struct {msg stringredius float64 }// 實現error接口,就是實現error方法 func (e *areaError) Error() string {return fmt.Sprintf("error:半徑是, %.2f,%s", e.redius, e.msg) }func circleArea(radius float64) (float64, error) {if radius < 0 {return 0, &areaError{"半徑是非法的", radius}}return math.Pi * radius * radius, nil }

總結

以上是生活随笔為你收集整理的go语言中错误的处理和实现自己的错误处理类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。