Исключения – это основное понятие в Java-программировании, которое помогает вам справляться с неожиданными ситуациями в вашем коде. Хотя вы уже узнали, как обрабатывать исключения, настало время сделать шаг вперед: Создание и Определение собственных исключений. В этом руководстве я покажу вам, как генерировать исключения в вашем коде и создавать персонализированные классы исключений, которые помогут вам сделать код более понятным и надежным.
Основные выводы
- Вы можете выбрасывать собственные исключения в Java, чтобы лучше справляться с конкретными ошибочными ситуациями.
- Определение собственных классов исключений позволяет сделать обработку ошибок более естественной и понятной.
- Вы научитесь выбрасывать исключения как в методах, так и работать с блоками Try-Catch.
Пошаговое руководство
1. Освежение знаний об обработке исключений
В начале важно вспомнить, как происходит обработка исключений в Java. Вы можете, например, вспомнить конструкции try-catch, которые позволяют вам перехватывать ошибки и реагировать на них соответствующим образом. На предыдущем этапе вы увидели, как обрабатывается NumberFormatException, когда происходит недопустимое преобразование строки в число.
2. Исключения в вашем собственном коде
Теперь давайте посмотрим, как вы можете выбрасывать исключения в своем собственном коде. Это может быть особенно полезно, если вы хотите определить специфические условия ошибок в ваших программах, которые не обрабатываются в Java по умолчанию.

3. Создание класса для валидации
Рассмотрим пример класса, который мы назовем MeinValidator. Этот класс будет содержать метод, который ожидает сегмент кода для валидации, в нашем случае – пин-код. Если введенный пин-код не соответствует определенному значению, будет выброшено исключение.
4. Создание и перехват ошибок
Внутри метода validateCode вы можете создать условие if. Если код не соответствует ожидаемому значению, вы выбрасываете новое исключение, которое выглядит следующим образом: throw new Exception("Только 42 является ответом на все вопросы.");. Здесь вы используете ключевое слово throw для создания исключения.
5. Настройка сигнатуры метода
Чтобы указать, что этот метод может выбрасывать исключение, вам нужно добавить ключевое слово throws в сигнатуру метода. Таким образом, метод теперь звучит так: public void validateCode(int code) throws Exception. Это четко сообщает о выбрасывании исключения, и все вызывающие методы обязаны с этим справляться.
6. Обработка исключений в блоке Try-Catch
Чтобы перехватить исключение, вы можете поместить метод в блок try-catch. При возникновении исключения код в блоке catch будет выполнен, где вы осуществляете конкретное управление ошибками, например, вывод сообщения об ошибке.
7. Опциональная повторная генерация исключений
Вы также можете рассмотреть возможность повторного выброса пойманного исключения, чтобы передать его на более высокий уровень логики. Однако следует учитывать, что это имеет смысл, только если вы не находитесь в основном методе, поскольку после блока catch, как правило, не следует никакой другой код.
8. Преимущества собственных исключений
Главное преимущество собственных классов исключений заключается в том, что они интуитивно понятны и специфичны для конкретного случая использования. Вместо работы с общими исключениями вы можете определить специфические классы, такие как NotFoundException или InvalidInputException. Они не только помогают идентифицировать ошибки, но и улучшают поиск и обслуживание вашего кода.

Резюме – Выбрасывание и определение исключений в Java
Выбрасывая и определяя собственные исключения, вы получаете мощный инструмент для эффективной обработки ошибок и улучшения читаемости вашего кода. Вы можете формулировать специфические условия для исключений и повышать логическое разделение ошибок, что увеличивает поддерживаемость вашей программы.
Часто задаваемые вопросы
В чем разница между проверяемыми и непроверяемыми исключениями?Проверяемые исключения должны обрабатываться в сигнатуре метода, тогда как непроверяемые исключения не обязаны.
Почему я должен создавать собственные исключения?Собственные исключения помогают с конкретными сообщениями об ошибках, направленными на лучшее выявление проблем и улучшение читаемости кода.
Как выбросить исключение в методе?Вы используете ключевое слово throw, за которым следует новый экземпляр исключения.
Должен ли я в декларации метода указывать, что выбрасываю исключение?Да, для этого вы используете ключевое слово throws в сигнатуре метода.
Что произойдет, если я не обработаю исключение?Программа обычно завершится с исключением времени выполнения, если только исключение не является недопустимым и не обработанным.