@zelan
Кратко обо мне не получится.

Как правильно и безболезненно отказаться от СHECKED EXCEPTION (переходе java->kotlin)?

Пишу и писал в основном на java, привык использовать проверяемые исключения. Привык что IDE заставляет меня обработать исключения если я забыл это сделать сам. При этом есть возможность обработать разный тип исключение по разному, и ide мне сама напоминает об их типах (объединяя иx и тп.).

Решил попробовать kotlin и тут на тебе... Оказывается там все исключения непроверяемые. Собственно для меня это дико.

1) Каким образом мне узнать что метод может что-то выбросить и что стоит обернуть код в try блок?

2) Каким образом обработать разный тип исключения по разному? Ведь тогда необходимо знать какое исключение (может даже несколько) выбрасывает метод, а в сигнатуре это не прописывается. Копаться в коде? Брррр...

3) Как проводить авто-рефакторинг? например, если работа метода изменилась и больше не выбрасывает одно из исключений - тогда будет оставаться мертвый код. Или хуже - добавилось новое исключение. Искать все места где используется метод и вводить новый catch?

4) Или может на всякий пожарный оборачивать все и везде (даже если метод ничего не выбрасывает)? Но это как-то неприятно и гадко.

Как поступить? Как то же пишут на C# и других языках с unchecked exceptions.
  • Вопрос задан
  • 596 просмотров
Решения вопроса 1
zolt85
@zolt85
Программист
Пишите тесты.
Checked Esception как показывает практика, только мешают.
Если код не Ваш, а библиотечный, например, читайте документацию к API библиотеки.
В проекте, в котором я лично работаю, нет проблем с checked exception-ами. Если точно знаем, что метод на kotlin вызывается из Java кода и бросает при этом checked exception, то такой метод помечается аннотацией @Throws с указанием типа Exception-a. Если точно знаем что Java-код, вызываемый из Kotlin-кода бросает checked exception, и нам важно его поймать, то заворачиваем код в try\catch.
Вроде не сложно ...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Spectrum Екатеринбург
от 100 000 до 160 000 руб.
PeoplePass Москва
от 100 000 до 250 000 руб.
CSSSR Ростов-на-Дону
от 70 000 до 180 000 руб.