Оператор throw

Оператор throw позволяет вручную создать и выбросить исключение в Kotlin. При выполнении этого оператора нормальный поток выполнения программы прерывается, и управление передается ближайшему блоку catch, который может обработать данное исключение. Если подходящий блок не найден, программа завершается с ошибкой.

Синтаксис

kotlinthrow Exception(message: String?)

Где Exception - это тип исключения (может быть любым классом, унаследованным от Throwable), а message - необязательное сообщение об ошибке.

Пример

Простой пример генерации исключения:

kotlinfun checkAge(age: Int) {
  if (age < 0) {
    throw IllegalArgumentException("Age cannot be negative")
  }
  println("Age is $age")
}

checkAge(-5)

Результат выполнения кода:

kotlinException in thread "main" java.lang.IllegalArgumentException: Age cannot be negative

Пример

Создание и выброс собственного исключения:

kotlinclass MyException(message: String) : Exception(message)

fun process(value: Int) {
  if (value > 100) {
    throw MyException("Value is too large")
  }
  println("Processing value: $value")
}

process(150)

Результат выполнения кода:

kotlinException in thread "main" MyException: Value is too large

Пример

Использование throw в выражении:

kotlinval result = if (true) {
  "Success"
} else {
  throw RuntimeException("Failure")
}
println(result)

Результат выполнения кода:

kotlinString "Success"

Пример

Перехват исключения с помощью try-catch:

kotlintry {
  throw ArithmeticException("Division by zero")
} catch (e: ArithmeticException) {
  println("Caught exception: ${e.message}")
}

Результат выполнения кода:

kotlinString "Caught exception: Division by zero"

Смотрите также

  • блок try,
    который позволяет перехватывать и обрабатывать исключения
  • блок finally,
    который выполняется независимо от того, было исключение или нет
  • функцию require,
    которая проверяет условие