Retour après un report dans Go
Vous rencontrez un problème où 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.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3