Что такое Exceptions? Зачем они нужны?android-39

Определение

Исключения (Exceptions) — это специальные объекты, которые возникают при возникновении нештатной ситуации во время выполнения программы. Они прерывают нормальный поток выполнения и позволяют обработать ошибку.

Для чего нужны исключения?

  1. Обработка ошибок - позволяют грамотно реагировать на непредвиденные ситуации
  2. Разделение нормального и ошибочного кода - улучшает читаемость
  3. Группировка ошибок - иерархия исключений (Checked/Unchecked)
  4. Передача информации об ошибке - исключения могут содержать детали проблемы

Типы исключений в Java/Kotlin

// Checked исключения (должны обрабатываться)
class IOException extends Exception {}

// Unchecked исключения (Runtime)
class NullPointerException extends RuntimeException {}

Checked vs Unchecked

Характеристика Checked Unchecked
Обязательность обработкиДаНет
Наследованиеот Exceptionот RuntimeException
Когда возникаютВнешние ошибки (IO, сеть)Ошибки программиста

Пример обработки в Android

try {
    val file = File("data.txt")
    file.readText()
} catch (e: FileNotFoundException) {
    Log.e("TAG", "Файл не найден", e)
    showErrorToast()
} catch (e: IOException) {
    Log.e("TAG", "Ошибка ввода-вывода", e)
} finally {
    closeResources() // Всегда выполняется
}

Лучшие практики в Android-разработке

  1. Не игнорируйте исключения - пустой catch блок это антипаттерн
  2. Используйте специфичные исключения - ловите конкретные типы, а не общий Exception
  3. Логируйте ошибки - используйте Log.e() или Crashlytics
  4. UI-поток - не обрабатывайте тяжелые исключения в main thread
  5. Корутины - для асинхронных операций используйте try/catch в coroutineScope

Особенности в Kotlin

Kotlin не имеет checked исключений, но сохраняет механизм try-catch-finally:

fun readFile() {
    val text = try {
        File("data.txt").readText()
    } catch (e: IOException) {
        "Default text"
    }
}

Резюмируем:

исключения — это мощный механизм обработки ошибок, который при правильном использовании делает код более надежным и поддерживаемым. В Android-разработке особенно важно грамотно обрабатывать исключения, так как мобильные устройства работают в нестабильных условиях (плохая сеть, мало памяти и т.д.).