Retour du report dans Go
Vous rencontrez un problème dans lequel vous souhaitez renvoyer une erreur si une fonction panique dans Go. Voici une analyse et un correctif pour votre 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... }
Concept de panique et de report
Modifications dans le code :
Avec ces modifications, votre fonction getReport renverra une erreur si elle panique en raison d'un format de rapport non valide. Le message d'erreur sera soit la valeur de panique (s'il s'agit d'une chaîne), soit une erreur générique indiquant une panique inconnue.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!