Heim > Artikel > Backend-Entwicklung > Wie kann ich einen Fehler zurückgeben, wenn eine Go-Funktion in Panik gerät?
Rückkehr von „Defer“ in Go
Sie stoßen auf ein Problem, bei dem Sie einen Fehler zurückgeben möchten, wenn eine Funktion in Go in Panik gerät. Hier ist eine Analyse und ein Fix für Ihren Code:
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... }
Konzept von Panik und Aufschub
Änderungen im Code:
Mit diesen Änderungen gibt Ihre getReport-Funktion einen Fehler zurück, wenn sie aufgrund eines ungültigen Berichtsformats in Panik gerät. Die Fehlermeldung ist entweder der Panikwert (falls eine Zeichenfolge) oder ein allgemeiner Fehler, der auf eine unbekannte Panik hinweist.
Das obige ist der detaillierte Inhalt vonWie kann ich einen Fehler zurückgeben, wenn eine Go-Funktion in Panik gerät?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!