Какова цель типизирования распространенных java.lang. * Исключения в Kotlin stdlib? - PullRequest
0 голосов
/ 25 января 2019

Недавно мне стало интересно, какой класс мне наследовать в Kotlin, если я хочу создать исключение для конкретного приложения.

Я заметил, что могу наследовать оба: собственный тип Котлина Exception и java.util.Exception. Итак, я искал ответы: Exception или java.lang.Exception и Exception или RuntimeException (поскольку в Kotlin нет проверенных исключений, в чем разница)? Относительно второго вопроса: я чувствую, что все еще лучше использовать RuntimeException, если в будущем код Kotlin может быть вызван из Java (пожалуйста, исправьте меня, если я ошибаюсь).

Относительно Exception Я обнаружил, что версия Kotlin - не что иное, как typealias на оригинальной Java Exception:

@ SinceKotlin ("1.1") публичные фактические typealias Exception = java.lang.Exception

Какова цель иметь этот typealias? Единственное преимущество, которое я вижу, это то, что вам не нужно import java.lang.Exception, что делает ваш исходный код более понятным. Хотите знать, есть ли другая мотивация за такой typeasing?

1 Ответ

0 голосов
/ 25 января 2019

Обычно я расширяю от RuntimeException по той же причине, по которой вы сами заявили, что в kotlin нет проверенных исключений, но все в порядке.

Причина, по которой typealias из java.lang.Exception есть внутри kotlin-stdlib, заключается в том, чтобы отделить ваш код kotlin от среды выполнения / платформы java. Это потому, что Jetbrains нацелены на другие среды выполнения / платформу . Цель состоит в том, чтобы теоретически вы могли с минимальными усилиями скомпилировать или перенести один и тот же код kotlin на разные платформы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...