從 Go 中的 Defer 返回
您遇到了一個問題,如果 Go 中的函數發生緊急情況,您希望返回錯誤。以下是您的程式碼的分析與修復:
func getReport(filename string) (rep report, err error) { rep.data = make(map[string]float64) defer func() { if r := recover(); r != nil { fmt.Println("Recovered in f", r) switch x := r.(type) { case string: err = errors.New(x) case error: err = x default: err = errors.New("Unknown panic") } rep = nil // Invalidate rep } }() panic("Report format not recognized.") // rest of the getReport function... }
恐慌和延遲的概念
程式碼中的修改:
透過這些更改,如果您的 getReport 函數因無效的報告格式而發生恐慌,它將傳回錯誤。錯誤訊息將是恐慌值(如果是字串)或指示未知恐慌的一般錯誤。
以上是如果 Go 函數發生緊急情況,如何回傳錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!