Sobes.tech
Junior
90
questionbank

Что такое классы Exception в Java и какие их виды существуют?

Ответ от нейросети

sobes.tech AI

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

Основные виды исключений в Java:

  • Checked Exceptions (Проверяемые исключения):
    • Проверяются компилятором (javac).
    • Требуют явной обработки (с помощью try-catch блоков) или объявления в сигнатуре метода (throws).
    • Представляют собой восстановимые ошибки, которые программа может попытаться исправить.
    • Примеры: IOException, SQLException, FileNotFoundException, ClassNotFoundException.
    // Пример использования checked exception
    try {
        java.io.FileReader file = new java.io.FileReader("my_file.txt");
        // дальнейшая работа с файлом
    } catch (java.io.FileNotFoundException e) {
        // обработка исключения
        e.printStackTrace();
    }
    
  • Unchecked Exceptions (Непроверяемые исключения):
    • Не проверяются компилятором.
    • Наследуются от RuntimeException.
    • Необязательно обрабатывать или объявлять.
    • Представляют собой ошибки времени выполнения, которые часто указывают на ошибки в логике программы.
    • Примеры: NullPointerException, ArrayIndexOutOfBoundsException, ArithmeticException, IllegalArgumentException.
    // Пример использования unchecked exception
    int[] numbers = {1, 2, 3};
    // Попытка доступа к элементу за пределами массива
    int number = numbers[5];
    // Это вызовет ArrayIndexOutOfBoundsException
    
  • Errors (Ошибки):
    • Наследуются от Error.
    • Не подлежат восстановлению в нормальных условиях.
    • Представляют собой серьезные проблемы, связанные с JVM или средой выполнения, такие как нехватка памяти или ошибки в потоках.
    • Не обрабатываются в обычной логике приложения.
    • Примеры: OutOfMemoryError, StackOverflowError, VirtualMachineError.
    // Пример ошибки (обычно не обрабатывается)
    public class StackOverflowExample {
        public static void recursiveMethod() {
            recursiveMethod(); // Бесконечная рекурсия
        }
    
        public static void main(String[] args) {
            recursiveMethod(); // Это вызовет StackOverflowError
        }
    }
    

Иерархия классов исключений в Java выглядит следующим образом:

Throwable
├── Exception
│   ├── Checked Exceptions (например, IOException)
│   └── RuntimeException (Непроверяемые исключения)
│       └── Unchecked Exceptions (например, NullPointerException)
└── Error
    └── JVM Errors (например, OutOfMemoryError)

Обработка исключений осуществляется с помощью блоков try, catch, finally и ключевого слова throw.