Почему Котлин не требует попыток и уловки явно

Например:

FileOutputStream("file") 

будет компилироваться в Kotlin, но в Java это даст ошибку компилятора. Зачем?

Kotlin устраняет проверенные исключения Java. Исключения, проверенные во время компиляции и объявленные в сигнатурах методов, хотя и знакомы разработчикам Java, широко считаются неудачным экспериментом вне и в некоторой степени внутри сообщества Java.

Поэтому Котлин покончил с ними и с некоторыми из шаблонов, связанных с использованием ресурсов (например, FileOutputStream ) с сокращением метода .use для try- FileOutputStream – resources для Java 7.

На это может быть трудно ответить, не мешая некоторым мнениям. Я просто скажу, что Kotlin нацелен на крупные проекты программного обеспечения и дает вам то, что утверждает команда Kotlin относительно проверенных исключений (от https://kotlinlang.org/docs/reference/exceptions.html ):

Проверенные исключения

Котлин не проверял исключения. Для этого есть много причин, но мы представим простой пример.

Ниже приведен пример интерфейса JDK, реализованного классом StringBuilder:

Appendable append (CharSequence csq) выбрасывает IOException; Что говорит эта подпись? В нем говорится, что каждый раз, когда я добавляю строку к чему-то (StringBuilder, какой-то журнал, консоль и т. Д.), Я должен поймать эти IOExceptions. Зачем? Поскольку он может выполнять IO (Writer также реализует Appendable) … Таким образом, это приводит к такому виду кода повсюду:

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

И это нехорошо, см. Эффективная Java , Пункт 65: Не игнорируйте исключения.

Брюс Эккел говорит, нуждается ли Java в проверенных исключениях? :

Изучение небольших программ приводит к выводу, что требуемые спецификации исключений могут как повысить производительность разработчика, так и повысить качество кода, но опыт работы с крупными проектами программного обеспечения предполагает другой результат – снижение производительности и незначительное увеличение качества кода.

Другие цитаты такого рода:

Проверенные исключения Java были ошибкой (Rod Waldhoff)

Проблема с проверенными исключениями (Андерс Хейлсберг)

Intereting Posts
Доступ к Integer.class из Котлина Ни один из следующих кандидатов не отвечает из-за несоответствия типа приемника Как компилировать Kotlin для включения jar Java с командной строкой? Как установить делегированное значение свойства путем отражения в котлин? Kotlin + Room: java.lang.IllegalArgumentException: void не может быть преобразован в элемент Борясь с попыткой получить изображение с камеры для загрузки в Firebase – java.lang.IllegalStateException: uri не должен быть нулевым Мое собственное решение для отсутствия пробных ресурсов Котлина Рекурсивный вызов по ленивому значению с использованием LiveData и ObserveForever Как исправить неоднозначность перегрузки в Котлине (без лямбда)? Передача собственности другому имуществу Переменная с kotlin для URL : задача kaptReleaseKotlin не работает на Jenkins (но работает на локальной машине) Слушатель внутри производителя Ошибки расширения Kotlin Сложить список для сопряжения с назначением деструктуризации в котлин