Зарегистрируйтесь, чтобы продолжить обучение

Ошибки Java: ООП

Иерархия исключений

Исключение в программировании - это событие, которое возникает во время выполнения программы и нарушает нормальный поток ее работы

Иерархия исключений

Обработка исключений

В Java, обработка исключений может быть осуществлена двумя основными способами: либо обработать исключение непосредственно в месте его возникновения, либо пробросить его дальше, чтобы оно было обработано на более высоком уровне

Конструкция try-catch-finally

Синтаксис:

try {
    // испольняемый код,
    // который может сгенерировать исключение
} catch (Exception exception) {
    // обработка исключения
} finally {
    // общий код, который выполнится в любом случае
}

Пример обработки разных типов исключений:

class Main {
    public static void main(String[] args) {
        try {
            // испольняемый код,
            // который может сгенерировать исключение
            System.out.println("try -- body");
            var ex = new ArithmeticException();
            throw ex;
        } catch (ArithmeticException | IndexOutOfBoundsException exception) {
            // обработка исключения ArithmeticException или IndexOutOfBoundsException
            System.out.println("try -- ArithmeticException | IndexOutOfBoundsException handler");

        } catch (Exception exception) {
            // обработка остальных исключений
            System.out.println("try -- Exception handler");

        } finally {
            // общий код, который выполнится в любом случае
            System.out.println("try -- finally");
        }
    }
}

Конструкция try-with-resource

Конструкция try with resources - это особый вид блоков try, который позволяет автоматически закрывать ресурсы, такие как файлы, сокеты или соединения с базой данных, после их использования. Это достигается за счет реализации интерфейса Closeable, который гарантирует, что ресурсы будут закрыты, даже если в блоке try возникнет исключение

try (FileWriter fileWriter = new FileWriter("filename.txt")) {
    filewriter.append ("some string");
} catch (IOException e) {
    e.printstackTrace();
}

Ключевое слово throws

В Java, ключевое слово throws используется для указания того, что метод может генерировать определенное исключение, которое не будет обработано внутри метода, а будет передано вызывающему коду. Это означает, что метод не будет обрабатывать исключение, а вместо этого сообщит о его возможности вызывающему коду, который должен будет его обработать или передать дальше

public static void method() throws IOException {
    throw new IOException();
}

Генерация исключений

Часто в процессе разработки приходится генерировать (выбрасывать) исключения вручную. Например, при валидации входных данных пользователя. Для генерации исключения используется ключевое слово throw

public void validateAge (int age) {
    if (age < 6) {
        throw new RuntimeException("Пользователь должен быть старше 6 лет");
    }

    if (age > 18) {
        throw new RuntimeException("Пользователь должен быть младше 18 лет");
    }
}

Реализация собственных исключений

В Java, реализация собственных исключений позволяет разработчикам создавать пользовательские исключения, которые могут быть использованы для обработки конкретных ошибок или ситуаций в программе. Для реализации собственного исключения необходимо создать класс, унаследованный от классов RuntimeException (непроверяемое исключение) или Exception (проверяемое исключение)

public class ValidationException extends RuntimeException {
    public string fieldName;

    public ValidationException(String message, String fieldName) {
        super (message);
        this.fieldName = fieldName;
    }
}

Дополнительные материалы

  1. Коды возврата и исключения

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
Программирование на Java, Разработка веб-приложений и микросервисов используя Spring Boot, проектирование REST API
10 месяцев
с нуля
Старт 13 марта

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»