← Назад ко всем вопросам

Как понять исключение проверяемое или непроверяемое

1️⃣ Как кратко ответить

Проверяемые исключения (checked exceptions) требуют обработки или объявления в сигнатуре метода с помощью throws. Они наследуются от Exception, но не от RuntimeException. Непроверяемые исключения (unchecked exceptions) не требуют обработки и наследуются от RuntimeException.

2️⃣ Подробное объяснение темы

В Java исключения делятся на две основные категории: проверяемые (checked) и непроверяемые (unchecked). Понимание разницы между ними важно для правильного управления ошибками в приложении.

Проверяемые исключения (Checked Exceptions):

Проверяемые исключения представляют собой ошибки, которые могут возникнуть в результате внешних факторов, таких как проблемы с вводом-выводом, доступом к базе данных и т.д. Компилятор Java требует, чтобы такие исключения были либо обработаны в блоке try-catch, либо объявлены в сигнатуре метода с помощью ключевого слова throws.

Пример:

import java.io.FileReader;
import java.io.IOException;
​
public class CheckedExample {
    public static void main(String[] args) {
        try {
            FileReader file = new FileReader("somefile.txt"); // Попытка открыть файл
            // ​
            file.read(); // Чтение из файла
            // ​
            file.close(); // Закрытие файла
        } catch (IOException e) {
            e.printStackTrace(); // Обработка исключения ввода-вывода
        }
    }
}
  • FileReader file = new FileReader("somefile.txt");: Попытка открыть файл. Может выбросить FileNotFoundException, который является проверяемым исключением.
  • file.read();: Чтение из файла. Может выбросить IOException, который также является проверяемым исключением.
  • catch (IOException e): Обработка исключения. Компилятор требует, чтобы IOException было обработано или объявлено в throws.

Непроверяемые исключения (Unchecked Exceptions):

Непроверяемые исключения возникают из-за ошибок в логике программы, таких как деление на ноль или доступ к элементу массива по недопустимому индексу. Они наследуются от RuntimeException и не требуют обязательной обработки или объявления.

Пример:

public class UncheckedExample {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3};
        // ​
        System.out.println(numbers[3]); // Попытка доступа к несуществующему элементу массива
    }
}
  • int[] numbers = {1, 2, 3};: Создание массива из трех элементов.
  • System.out.println(numbers[3]);: Попытка доступа к элементу с индексом 3, который не существует. Это вызовет ArrayIndexOutOfBoundsException, непроверяемое исключение.

Зачем это нужно:

  • Проверяемые исключения: Обеспечивают надежность программы, заставляя разработчика обрабатывать потенциальные ошибки, которые могут возникнуть из-за внешних факторов.
  • Непроверяемые исключения: Позволяют сосредоточиться на логике программы, не перегружая код обработкой ошибок, которые должны быть исправлены в процессе разработки.

Где применяется:

  • Проверяемые исключения часто используются в методах, работающих с внешними ресурсами, такими как файлы, сети и базы данных.
  • Непроверяемые исключения применяются для обозначения ошибок в логике программы, которые должны быть исправлены разработчиком.

Тема: Исключения и ошибки
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки