Блок try-catch
Конструкция try-catch используется для безопасного выполнения кода, который может вызвать исключение. В блоке try размещается код, который может вызвать ошибку, а в блоке catch описывается обработка конкретных типов исключений. Дополнительно может использоваться блок finally, который выполняется в любом случае, независимо от возникновения исключения.
Синтаксис
try {
// код, который может вызвать исключение
} catch (e: ExceptionType) {
// обработка исключения
} finally {
// код, который выполнится в любом случае
}
Пример
Обработка исключения при делении на ноль:
val a = 10
val b = 0
try {
val res = a / b
println(res)
} catch (e: ArithmeticException) {
println("Cannot divide by zero")
}
Результат выполнения кода:
String "Cannot divide by zero"
Пример
Использование блока finally:
val numbers = listOf(1, 2, 3)
try {
println(numbers[5])
} catch (e: IndexOutOfBoundsException) {
println("Index out of bounds")
} finally {
println("This will always execute")
}
Результат выполнения кода:
String "Index out of bounds"
String "This will always execute"
Пример
Обработка нескольких типов исключений:
val input = "abc"
try {
val num = input.toInt()
println(num)
} catch (e: NumberFormatException) {
println("Invalid number format")
} catch (e: Exception) {
println("Some other error occurred")
}
Результат выполнения кода:
String "Invalid number format"
Пример
Использование try в качестве выражения:
val numberStr = "123"
val number = try {
numberStr.toInt()
} catch (e: NumberFormatException) {
-1
}
println(number)
Результат выполнения кода:
Int 123