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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

GO语言笔记4

發布時間:2025/3/15 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GO语言笔记4 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正文

錯誤處理

package chapter3import ("errors""fmt""io/ioutil""log""net/http""os""strings" ) type appHandler func(writer http.ResponseWriter,request *http.Request)error func errWrapper(handler appHandler)func( writer http.ResponseWriter,request *http.Request){return func(writer http.ResponseWriter,request *http.Request){err:=handler(writer,request)if err!=nil{code:=http.StatusOKswitch {case os.IsNotExist(err):code=http.StatusNotFounddefault:code=http.StatusInternalServerError}http.Error(writer,http.StatusText(code),code)}} } func main(){http.HandleFunc("/list/",errWrapper(filehandle))http.ListenAndServe(":8888",nil)} const prefix="/list/" type userError string func(e userError)Error()string{return e.Message() } func (e userError)Message()string{return string(e) } func filehandle(writer http.ResponseWriter,request *http.Request)error {if strings.Index(request.URL.Path,prefix)!=0{return errors.New("path must start"+"with"+prefix)}path:=request.URL.Path[len("/list/"):]//統一錯誤處理file,err:=os.Open(path)if err!=nil{http.Error(writer,err.Error(),http.StatusInternalServerError)return}defer file.Close()all,err:=ioutil.ReadAll(file)if err!=nil{log.Printf("Error occurred"+"handling request:%s" ,err.Error())}if err!=nil{return err}writer.Write(all)return nil } //服務器統一錯誤處理func tryRecover(){defer func(){//錯誤處理的核心,在于recover函數,如果是已知的錯誤,可以把它recover如果是未知的錯誤,則要提示維護者。r:=recover()if err,ok:=r.(error);ok{fmt.Println("Error occurred:",err)}else{panic(fmt.Sprintf(" i dont know"))}}() }// error vs panic //defer panic recover

總結

以上是生活随笔為你收集整理的GO语言笔记4的全部內容,希望文章能夠幫你解決所遇到的問題。

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