|
|
本帖最后由 CodyDoby 于 2021-3-24 21:25 编辑
不懂Go语言,照葫芦画瓢想搞个错误处理,结果蒙圈了各种报错,求帮看看...
报错:
-
- • building binaries
- • building binary=/home/runner/work/gclone/gclone/dist/gclone_windows_amd64/gclone.exe
- • building binary=/home/runner/work/gclone/gclone/dist/gclone_linux_amd64/gclone
- • building binary=/home/runner/work/gclone/gclone/dist/gclone_linux_386/gclone
- • building binary=/home/runner/work/gclone/gclone/dist/gclone_windows_386/gclone.exe
- ⨯ release failed after 171.47s error=failed to build for linux_amd64: # github.com/donwa/gclone/backend/drive
- Error: backend/drive/drive.go:643:22: err.msg undefined (type error has no field or method msg)
- Error: The process '/opt/hostedtoolcache/goreleaser-action/0.160.0/x64/goreleaser' failed with exit code 1
复制代码
代码片段:
- func (f *Fs) shouldRetry(err error) (bool, error) {
- if err == nil {
- return false, nil
- }
- if fserrors.ShouldRetry(err) {
- return true, err
- }
- switch gerr := err.(type) {
- case *googleapi.Error:
- if gerr.Code >= 500 && gerr.Code < 600 {
- // All 5xx errors should be retried
- return true, err
- }
- if len(gerr.Errors) > 0 {
- reason := gerr.Errors[0].Reason
- if reason == "rateLimitExceeded" || reason == "userRateLimitExceeded" {
- // 如果存在 ServiceAccountFilePath,调用 changeSvc, 重试
- if(f.opt.ServiceAccountFilePath != ""){
- f.waitChangeSvc.Lock()
- f.changeSvc()
- f.waitChangeSvc.Unlock()
- return true, err
- }
- if f.opt.StopOnUploadLimit && gerr.Errors[0].Message == "User rate limit exceeded." {
- fs.Errorf(f, "Received upload limit error: %v", err)
- return false, fserrors.FatalError(err)
- }
- return true, err
- }
- }
- // added by me
- default:
- reason := err.msg
- if reason == "Max transfer limit reached as set by --max-transfer" {
- // do something
- if(f.opt.ServiceAccountFilePath != ""){
- f.waitChangeSvc.Lock()
- f.changeSvc()
- f.waitChangeSvc.Unlock()
- return true, err
- }
- }
- // added by me
- }
- return false, err
- }
复制代码 |
|