Curso de Raku / Programación funcional, concurrente, reactiva y web / Programación reactiva / await / Exercises / Espere un fallo
Solución: Espere un fallo
Aquí tienes una posible solución para la tarea.
Código
my $p = start { die 'boom' };
try {
await $p;
CATCH {
default { say "caught: {.message}" }
}
}🦋 Puedes encontrar el código fuente en el archivo await-failure.raku.
Salida
caught: boomComentarios
El bloque de la promesa lanza una excepción, así que la promesa queda rota. La excepción no se pierde: se guarda hasta que alguien espera la promesa.
await $pla relanza justo ahí, donde el fáserCATCHla trata como cualquier excepción corriente. Así es como los errores del trabajo en segundo plano afloran allí donde esperas el resultado.