¿Hay alguna manera fácil de ver qué excepciones arroja una function de Kotlin?

La mayoría de las veces entiendo los posibles problemas con las excepciones comprobadas y por qué Kotlin las omite. Sin embargo, el problema que estoy enfrentando es que no puedo encontrar ninguna forma infalible de indicar claramente a quien llama qué excepciones puede arrojar una function.

Me he encontrado con el problema innumerables veces en Python, donde mi progtwig fallará después de ejecutarse durante meses porque no me di count de que una function de una biblioteca que estoy usando puede generar una exception en particular. Aunque ser forzado a atrapar excepciones puede ser bastante problemático, es bueno ver claramente todas las posibles excepciones que una function puede arrojar.

Volviendo a la pregunta, ¿hay alguna manera simple de ver qué excepciones arroja una function en Kotlin? ¿Qué pasa con los methods escritos en Java que están siendo llamados desde Kotlin? Incluso si solo se tratara de herramientas (intelliJ). No estoy contando escribirlo en javadoc o kdoc ya que el escritor de la function que está utilizando puede haberlo omitido.

Si desea saber qué excepciones arroja un método Java cuando Kotlin lo llama desde IntelliJ, puede usar el atajo de keyboard F1 para jalar el javadoc y ver la statement de lanzamientos en el menu emergente.

Las funciones de Kotlin pueden declarar excepciones que arroja usando la anotación @Throws . Las annotations son obviamente opcionales, por lo que probablemente no pueda esperar que esto siempre exista. Desafortunadamente, cuando usa el atajo de keyboard F1 en un método que usa @Throws, no muestra las excepciones declaradas para lanzarse. Se requieren llamadas Java a estos methods para capturar estas excepciones declaradas en la anotación.

Kotlin javadoc puede usar la anotación @throws javadoc para proporcionar excepciones de definición que se pueden lanzar en una function. Aparecen en javadoc y en windows emergentes de ayuda F1. Por supuesto, esto también es opcional.

Esta biblioteca llamada Resultado es una buena solución. Devuelve un object Result con un valor o una exception y cambia su tipo a éxito o falla en consecuencia. También se pueden unir entre sí utilizando el map de bibliotecas y las funciones de map plano, lo que ayuda a eliminar los bloques try-catch nesteds. Muy bueno, recomiendo a cualquiera que encuentre esta pregunta, échale un vistazo.

Por supuesto, esto solo ayuda con las funciones que lo aprovechan, así que no estoy marcando esto como una respuesta.