Tratamiento de excepciones en las corrutinas
TL; DR Cuando se lanza una excepción dentro de una corrutina: Debemos capturarla con un try-catch , igual que cuando se lanza en cualquier otro lado. De no capturarla, la corrutina se cancela y la excepción se propaga hasta la corrutina raíz (la primera, lanzada con el CoroutineScope original), para ser capturada por su CoroutineExceptionHandler . Si la corrutina raíz tiene CoroutineExceptionHandler , la excepción es capturada ahí y la aplicación no peta. try-catch Mira este código y olvídalo inmediatamente: try { viewModelScope . launch { val numero = "Texto" .toInt() println(numero.toString()) } } catch (t: Throwable) { // Aquí nunca se capturará nada. } Envolver el lanzamiento de la corrutina en un bloque try-catch NO SIRVE DE NADA porque el código que lanza la excepción no va a suceder en ese momento. El código de la corrutina se ejecutará de manera asíncrona, es decir, que aunque esté ahí escrito, no se va a ejecut...