Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

459
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!