Исключения
Исключение представляет событие, которое возникает при выполнении программы и нарушает ее нормальной ход.
Столкнувшись с непреодолимой проблемой, код может возбудить исключение и таким способом сообщить, что ее необходимо устранить, прежде чем двигаться далее.
Возбуждение исключений
Применяется оператор throw
proficiencyCheck(swordsJuggling) fun proficiencyCheck (swordJuggling: Int?) { swordJuggling ?: throw IllegalStateException("Player cannot juggle swords") }
Пользовательские исключения
Можно создавать исключения самостоятельно для определенной проблемы. Для этого создается класс.
class UnskilledSwordJugglerException: IllegalStateException("Player cannot juggle swords") fun proficiencyCheck (swordJuggling: Int?) { swordJuggling ?: throw UnskilledSwordJugglerException() }
Обработка исключений (try-catch)
try { proficiencyCheck(swordsJuggling) swordsJuggling = swordsJuggling!!.plus(1) } catch (e: Exception) { println(e) }
Если исключение не появится, оператор try выполнится, а оператор catch нет.
Проверка условий
Можно также воспользоваться функцией checkNotNull
fun proficiencyCheck (swordJuggling: Int?) { checkNotNull(swordJuggling) { "Player cannot juggle swords" } }
Функции проверки условий — хороший способ проверить требования, прежде чем выполнять код. Они гораздо понятнее, чем ручное возбуждение исключений, потому что проверяемое условие можно видеть в имени функции.
Для чего использовать NULL?
Null часто используется как начальное значение переменной, которая не имеет естественного значения. Более того, во многих языках можно объявить переменную без начального значения, и тогда она получит значение по умолчанию null.
Пример:
fun sum(a: String, b: String) : Int { val result = try { val numA = a.toInt() val numB = b.toInt() numA + numB } catch (e: Exception) { 0 } println(result) return result }