Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

183
Vistas
¿Cómo ignorar JobCancellationException?

Recientemente, actualicé Kotlin Coroutines de experimental a 1.1.1 y enfrenté el problema de que job.cancel() en la nueva versión funciona de manera diferente.

Aquí está el código con rutinas experimentales:

 fun <R : Any, T : Deferred<R>> T.runAsync( job: Job, onSuccess: (result: R) -> Unit, onFailed: (errorMsg: String?) -> Unit) { launch(UI, parent = job) { try { val result = this@runAsync.await() onSuccess(result) } catch (e: Exception) { onFailed(e.message) } } }

Aquí está con 1.1.1:

 fun <R : Any, T : Deferred<R>> T.runAsync( job: Job, onSuccess: (result: R) -> Unit, onFailed: (errorMsg: String?) -> Unit) { GlobalScope.launch(Dispatchers.Main + job) { try { val result = withContext(Dispatchers.IO) { this@runAsync.await() } onSuccess(result) } catch (e: Exception) { onFailed(e.message) } } }

Por ejemplo:

Mi fragmento se destruyó y llamó job.cancel() durante la ejecución de la rutina.

En las corrutinas experimentales no se llamará a onSuccess() ni onFailed() .

En 1.1.1: se llamó a onFailed() porque se JobCancellationException

Me di cuenta de agregar catch (e: JobCancellationException) , pero es imposible:

 /** * @suppress **This an internal API and should not be used from general code.** */ internal expect class JobCancellationException(

Entonces, la pregunta es: ¿Cómo manejar/ignorar JobCancellationException ?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

En su lugar, intenta capturar la CancellationException de superclase, que es parte de la API pública.

Tenga en cuenta que si algo lanza CancellationException , generalmente se espera que lo vuelva a lanzar para que los objetos ascendentes sean notificados sobre la cancelación. Ver La cancelación es cooperativa

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda