Назад к вопросам
Junior
72
questionbank
Знаешь ли ты об иерархии ошибок в Android?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Да.
В Android, как и в Java, иерархия ошибок основывается на классе Throwable. От него наследуются Error и Exception.
Error: Представляют собой серьезные проблемы, от которых приложение обычно не может оправиться (например, проблемы с JVM).Exception: Представляют собой исключительные ситуации, которые могут быть обработаны приложением. Делятся на:- Checked Exceptions: Ошибки, которые компилятор требует обрабатывать (например,
IOException). Наследуются напрямую отException. - Unchecked Exceptions: Ошибки выполнения, которые компилятор не требует обрабатывать явно (например,
NullPointerException,ArrayIndexOutOfBoundsException). Наследуются отRuntimeException, который, в свою очередь, наследуется отException.
- Checked Exceptions: Ошибки, которые компилятор требует обрабатывать (например,
Основные классы в иерархии:
java.lang.Throwablejava.lang.Errorjava.lang.OutOfMemoryErrorjava.lang.StackOverflowError- ...
java.lang.Exception- Checked Exceptions (напрямую от
Exception)java.io.IOExceptionjava.lang.ClassNotFoundException- ...
java.lang.RuntimeExceptionjava.lang.NullPointerExceptionjava.lang.ArrayIndexOutOfBoundsExceptionjava.lang.IllegalArgumentException- ...
- Checked Exceptions (напрямую от
Пример обработки исключения:
// Kotlin
fun readFile(path: String) {
try {
// попытка прочитать файл
val fileContent = java.io.File(path).readText()
println(fileContent)
} catch (e: java.io.IOException) {
// обработка ошибки ввода/вывода
println("Ошибка чтения файла: ${e.message}")
e.printStackTrace() // вывод стека вызовов для отладки
} catch (e: Exception) {
// обработка любых других исключений, если необходимо
println("Произошла другая ошибка: ${e.message}")
} finally {
// этот блок выполнится всегда, независимо от ошибок
println("Попытка чтения файла завершена")
}
}