вызов в библиотеку которая кидает например io, то есть получается мне нужно лезть в сорсы чтобы понять это? Я понимаю что мехонизм сам по себе сложный, я про то когда там через 5 классов исключение сквозное и тд, но тем не менее все знают что оно там есть и что его придется обрабатывать хочешь или нет :))
Ну хотя бы есть аннотация @Throws есть. В некоторых языках и этого нет (как и документации к коду) при этом в наличии безумное метапрограммирование и кучи вариантов вызова функций.
Аннотируйте свой код @Throws - делайте мир лучше! )
Метод не должен диктовать, как вызывающая сторона будет обрабатывать ошибки; объявление throws раскрывает детали имплементации; обработка проверяемых исключений, которые никогда не произойдут, замусоривает код. Проблем с проверяемыми исключениями больше, чем пользы, типы исключений должны быть в документации, а не в сигнатуре. В Джаве они были ошибкой, не зря современные языки от них отказались. Пункт 7 в статье https://medium.com/@lukleDev/how-effective-java-may-have-influenced-the-design-of-kotlin-part-2-89844d62ddf3 и соответствующая глава в Effective Java.
Ты можешь завернуть ее в suspend функцию (если она IO, то наверняка асинхронная) и тогда ее вообще нельзя будет вызвать из обычного кода.
Обсуждают сегодня