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

Какие знаешь виды исключений

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

В Java исключения делятся на проверяемые (checked), непроверяемые (unchecked) и ошибки (errors). Проверяемые исключения требуют обработки или объявления в сигнатуре метода, непроверяемые — это потомки RuntimeException и могут не обрабатываться, ошибки представляют собой критические сбои, которые обычно не обрабатываются.

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

Исключения в Java — это механизм обработки ошибок, который позволяет программе продолжать выполнение после возникновения ошибки. Исключения делятся на три основных типа: проверяемые исключения, непроверяемые исключения и ошибки.

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

Проверяемые исключения — это исключения, которые проверяются во время компиляции. Это означает, что компилятор требует, чтобы вы либо обработали эти исключения с помощью блока try-catch, либо объявили их в сигнатуре метода с помощью ключевого слова throws. Примеры проверяемых исключений включают IOException, SQLException, и ClassNotFoundException.

Пример:

import java.io.FileReader;
import java.io.IOException;
​
public class CheckedExceptionExample {
    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");: Попытка открыть файл, которая может вызвать IOException.
  • file.read();: Чтение из файла, также может вызвать IOException.
  • file.close();: Закрытие файла, может вызвать IOException.
  • catch (IOException e): Обработка исключения, если оно возникло.

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

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

Пример:

public class UncheckedExceptionExample {
    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.

Ошибки (Errors)

Ошибки представляют собой серьезные проблемы, которые обычно не могут быть обработаны программой. Они являются потомками класса Error и возникают из-за проблем, связанных с ресурсами, таких как нехватка памяти (OutOfMemoryError) или сбой в работе виртуальной машины Java (StackOverflowError). Обычно такие ошибки не обрабатываются, так как они указывают на критические сбои.

Пример:

public class ErrorExample {
    public static void main(String[] args) {
        try {
            recursiveMethod(); // Вызов рекурсивного метода
        } catch (StackOverflowError e) {
            System.out.println("Stack overflow error caught!"); // Обработка ошибки переполнения стека
        }
    }
​
    public static void recursiveMethod() {
        recursiveMethod(); // Бесконечная рекурсия, вызывающая StackOverflowError
    }
}
  • recursiveMethod();: Вызов метода, который вызывает сам себя бесконечно.
  • catch (StackOverflowError e): Обработка ошибки переполнения стека, хотя обычно такие ошибки не обрабатываются.

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

Исключения позволяют отделить код обработки ошибок от основного кода программы, делая его более чистым и понятным. Они помогают управлять непредвиденными ситуациями, которые могут возникнуть во время выполнения программы, и обеспечивают более надежное и устойчивое поведение приложения.

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

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

Твои заметки