¿Por qué Kotlin no necesita probar y atrapar explícitamente

Por ejemplo:

FileOutputStream("file") 

comstackría en Kotlin, pero en Java daría un error de compilation. ¿Por qué?

Kotlin elimina las excepciones marcadas de Java. Las excepciones comprobadas en time de compilation y declaradas en firmas de methods, aunque son familiares para los desarrolladores de Java, se consideran ampliamente como un experimento fallido fuera y en cierto grado dentro de la comunidad Java.

Así que Kotlin los eliminó , y con algunos de los estándares asociados con el uso de resources (como FileOutputStream ) con el método .use , abreviatura de los bashs de Java 7 con resources .

Puede ser difícil responder sin dejar que algunas opiniones interfieran. Solo diré que Kotlin está dirigido a grandes proyectos de software y le proporciono lo que el equipo de Kotlin afirma con respecto a las excepciones marcadas (de https://kotlinlang.org/docs/reference/exceptions.html ):

Excepciones controladas

Kotlin no tiene excepciones marcadas. Hay muchas razones para esto, pero ofreceremos un ejemplo simple.

La siguiente es una interfaz de ejemplo del JDK implementado por la class StringBuilder:

Appendible append (CharSequence csq) arroja IOException; ¿Qué dice esta firma? Dice que cada vez que agrego una cadena a algo (un StringBuilder, algún tipo de logging, una console, etc.) tengo que atrapar esas IOExcepciones. ¿Por qué? Porque podría estar ejecutando IO (Writer también implementa Appendable) … Por lo tanto, da como resultado este tipo de código en todas partes:

 try { log.append(message) } catch (IOException e) { // Must be safe } 

Y esto no es bueno, ver Java efectivo , artículo 65: no ignorar las excepciones.

Bruce Eckel dice en ¿Necesita Java excepciones controladas? :

El examen de pequeños progtwigs lleva a la conclusión de que requerir especificaciones de exception podría mejorar la productividad del desarrollador y mejorar la calidad del código, pero la experiencia con grandes proyectos de software sugiere un resultado diferente: disminución de la productividad y poco o ningún aumento en la calidad del código.

Otras citas de este tipo:

Las excepciones comprobadas de Java fueron un error (Rod Waldhoff)

El problema con las excepciones controladas (Anders Hejlsberg)

  • Cómo convertir la expresión de asignación de Java a Kotlin
  • La expresión lambda no se usa
  • ¿Cómo debo configurar los dispositivos de testing mutables en Spek?
  • Excepción: blockingConnect no se debe invocar en el subprocess UI a pesar de que subsubscribí en otro subprocess
  • Cómo get un package de kotlin por reflexión
  • ¿Cómo configurar Jacoco con Spek en un proyecto múltiple?
  • Android Studio salta sobre puntos de interrupción
  • Ejecutar testings unitarias no capta cambios
  • El evento táctil de visitas llena toda la pantalla
  • Cómo recuperar datos de una tabla personalizada en Corda
  • ¿Por qué el código que inicializa una propiedad de interfaz variable no se codificará en la compilation del bloque init?