Блок try-catch

Конструкция try-catch используется для безопасного выполнения кода, который может вызвать исключение. В блоке try размещается код, который может вызвать ошибку, а в блоке catch описывается обработка конкретных типов исключений. Дополнительно может использоваться блок finally, который выполняется в любом случае, независимо от возникновения исключения.

Синтаксис

kotlintry {
  // код, который может вызвать исключение
} catch (e: ExceptionType) {
  // обработка исключения
} finally {
  // код, который выполнится в любом случае
}

Пример

Обработка исключения при делении на ноль:

kotlinval a = 10
val b = 0

try {
  val res = a / b
  println(res)
} catch (e: ArithmeticException) {
  println("Cannot divide by zero")
}

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

kotlinString "Cannot divide by zero"

Пример

Использование блока finally:

kotlinval numbers = listOf(1, 2, 3)

try {
  println(numbers[5])
} catch (e: IndexOutOfBoundsException) {
  println("Index out of bounds")
} finally {
  println("This will always execute")
}

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

kotlinString "Index out of bounds"
String "This will always execute"

Пример

Обработка нескольких типов исключений:

kotlinval input = "abc"

try {
  val num = input.toInt()
  println(num)
} catch (e: NumberFormatException) {
  println("Invalid number format")
} catch (e: Exception) {
  println("Some other error occurred")
}

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

kotlinString "Invalid number format"

Пример

Использование try в качестве выражения:

kotlinval numberStr = "123"

val number = try {
  numberStr.toInt()
} catch (e: NumberFormatException) {
  -1
}

println(number)

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

kotlinInt 123

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

  • функцию throw,
    которая используется для явного выброса исключений
  • функцию check,
    которая проверяет условие и выбрасывает исключение