Volviendo de Aplazar en Go
Te encuentras con un problema en el que deseas devolver un error si una función falla en Go. Aquí hay un análisis y una solución para su código:
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... }
Concepto de pánico y aplazamiento
Modificaciones en el código:
Con estos cambios, su función getReport devolverá un error si entra en pánico debido a un formato de informe no válido. El mensaje de error será el valor de pánico (si es una cadena) o un error genérico que indica un pánico desconocido.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3