/* Page prose (es) */
"WhenAChildThrows" = "# Cuando una hija lanza: `withThrowingTaskGroup`\n\nLos fotogramas reales pueden estar corruptos: un archivo truncado, una suma de verificación errónea. Si cargar un fotograma puede `throw`, recurre a `withThrowingTaskGroup`. Funciona exactamente como la versión simple, con dos diferencias: tus clausuras hijas pueden lanzar, y iteras con `for try await`. Si **alguna** hija lanza, el grupo **cancela las hijas restantes** y relanza ese error fuera del ámbito del grupo.";
"WhenAChildThrows-2" = "**Míralo en acción:** el fotograma 4 lanza, y el bucle `for try await` relanza, lo que sale del grupo. En la salida, el grupo **cancela las hermanas que todavía se están ejecutando** y espera a que se cierren, y luego el error aflora en tu `catch`. Verás `Stacking aborted: frame 4 was corrupt`, y la `sum` parcial se descarta. Un fotograma malo no deja a otras siete tareas ejecutándose en segundo plano.\n\n* callout(Nota de diseño): Relanzar es una postura de *todo o nada*: un fallo abandona el lote. Si en cambio prefieres **saltarte** los fotogramas malos y apilar los buenos, no dejes que la hija lance fuera del grupo. Haz que atrape su propio error y devuelva algo como `Double?` (o un pequeño enum al estilo `Result`), y luego filtra los `nil` a medida que recolectas. Elige según si un solo fotograma corrupto debería condenar toda la pila.\n\n[Anterior](@previous)  |  página 6 de 9  |  [Siguiente: La garantía estructurada](@next)";
