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

507
Vistas
¿Cuál es el equivalente de fatalError() de Swift en Kotlin?

Di que quiero hacer algo como

 val foo = when(bar) { "one" -> true "two" -> false else -> // in Swift it would be `fatalError()` }

¿Cómo lo hago?

Soy consciente de que generalmente hay mejores enfoques para este tipo de problema, pero también quiero saber cómo inducir fácilmente un bloqueo en Kotlin :)

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

0

Podrías lanzar una excepción. Esto aumentará la pila de llamadas hasta que alguien lo maneje o se quede sin marcos de pila y la aplicación se bloquee.

 val foo = when(bar) { "one" -> true "two" -> false else -> throw IllegalArgumentException("$bar is Unknown") }

Acabo de usar IllegalArgumentException aquí, pero es posible que desee definir el suyo propio.

over 4 years ago · Santiago Trujillo Denunciar

0

Si observa la función global TODO() en Kotlin:

 public inline fun TODO(): Nothing = throw NotImplementedError()

Puede ver que es una función que devuelve Nothing (similar a Never de Swift), y throw un NotImplementedError .

Con esto, podemos crear nuestra propia función fatalError para imitar a Swift:

 public fun fatalError(message: String = ""): Nothing = throw NotImplementedError(message)

Y debido a que devuelve Nothing , puede usarlo de la misma manera que lo haría en Swift:

 fun getValue(): Boolean = when(this) { "true" -> true "false" -> false else -> fatalError("Cannot determine value for $this") }
over 4 years ago · Santiago Trujillo Denunciar

0

Lanzar una excepción (o, mejor aún, un Error ) es una forma, pero es posible que no cierre el subproceso actual: cualquiera de las funciones de llamada podría detectar la excepción, o se podría haber establecido un UncaughtExceptionHandler para elSubproceso (o su ThreadGroup ).

Tampoco cerrará ningún otro subproceso que pueda estar ejecutándose. (Incluso si no ha iniciado ninguno usted mismo, son utilizados por rutinas, kits de herramientas de GUI y otros marcos de ejecución).

Para cerrar toda la aplicación, debe usar la función exitProcess() de Kotlin, o en Kotlin/JVM el método System.exit() equivalente. Eso terminará todos los hilos.

Pero incluso eso hará un apagado 'elegante', ejecutando cualquier gancho de apagado, finalizadores, etc. Si necesita cerrar por la fuerza una aplicación Kotlin/JVM inmediatamente , llame a Runtime.getRuntime().halt() .

(Y, por supuesto, probablemente sea una buena práctica mostrar primero algo en la salida estándar o el marco de registro que está utilizando, para indicar cuál era el problema).

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