java lang exception

29.06.24 02:41
Просмотров 89

Java Lang Exception: подробное руководство

Введение

В повседневной жизни иногда возникают ситуации, которые мы не планировали. Например, встаёте утром на работу, ищете зарядное устройство к телефону, а его нет. Или идёте в ванну, чтобы умыться, а там воду отключили. Сел в машину, а она не заводится. Но человек в состоянии довольно легко справиться с такими непредвиденными ситуациями. А как с ними справляются Java-программы, постараемся разобраться в этой статье.

Что такое исключения (Exceptions Java)

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

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

В Java предусмотрен механизм исключений для обработки таких ситуаций. Ключевые слова try, catch, finally, throws используются для обработки исключений.

  1. try — определяет блок кода, в котором может произойти исключение.

  2. catch — определяет блок кода, в котором происходит обработка исключения.

  3. finally — определяет блок кода, который является необязательным, но при его наличии выполняется в любом случае независимо от результатов выполнения блока try.

Эти ключевые слова используются для создания в программном коде специальных обрабатывающих конструкций: try{}catch, try{}catch{}finally, try{}finally{}.

throw — используется для возбуждения исключения;
throws — используется в сигнатуре методов для предупреждения о том, что метод может выбросить исключение.

Пример использования ключевых слов в Java-программе:

//метод считывает строку с клавиатуры
public String input() throws MyException {
//предупреждаем с помощью throws, что метод может выбросить исключение MyException
}

Механизм исключений также позволяет защитить написанный вами код (программный интерфейс) от неправильного использования пользователем за счёт валидации (проверки) входящих данных.

Почему важно предупреждать о возможных исключениях

Когда вы не планируете обрабатывать исключение в своём методе, но хотите предупредить пользователей метода о возможных исключительных ситуациях, используйте ключевое слово throws. Это ключевое слово в сигнатуре метода означает, что при определённых условиях метод может выбросить исключение. Такое предупреждение является частью интерфейса метода и предоставляет право пользователю на собственный вариант реализации обработчика исключения.

После throws мы указываем тип выбрасываемого исключения. Обычно это наследники класса Exception Java. Поскольку Java является объектно-ориентированным языком, все исключения в Java представляют собой объекты.

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

При возникновении ошибки в процессе выполнения программы исполняющая среда JVM создаёт объект нужного типа из иерархии исключений Java — множества возможных исключительных ситуаций, унаследованных от общего «предка» — класса Throwable.

Исключительные ситуации, возникающие в программе, можно разделить на две группы:

  1. Ситуации, при которых восстановление дальнейшей нормальной работы программы невозможно.

  2. Ситуации, при которых восстановление возможно.

К первой группе относят ситуации, когда возникают исключения, унаследованные из класса Error. Это ошибки, возникающие при выполнении программы в результате сбоя работы JVM, переполнения памяти или сбоя системы. Обычно они свидетельствуют о серьёзных проблемах, устранить которые программными средствами невозможно.

Ко второй группе относят исключительные ситуации, предвидимые ещё на стадии написания программы, и для которых должен быть написан код обработки. Такие исключения являются контролируемыми (checked). Основная часть работы разработчика на Java при работе с исключениями — обработка таких ситуаций.

Создание исключения

При исполнении программы исключение генерируется JVM или вручную, с помощью оператора throw. При этом в памяти создаётся объект исключения и выполнение основного кода программы прерывается, а обработчик исключений JVM пытается найти способ обработать исключение.

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

Создание блоков кода, для которых мы предусматриваем обработку исключений в Java, производится в программе с помощью конструкций try{}catch, try{}catch{}finally, try{}finally{}.

При возбуждении исключения в блоке try обработчик исключения ищется в следующем за ним блоке catch. Если в catch есть обработчик данного типа исключения — управление переходит к нему. Если нет, то JVM ищет обработчик этого типа исключения в цепочке вызовов методов до тех пор, пока не будет найден подходящий catch. После выполнения блока catch управление передаётся в необязательный блок finally. В случае, если подходящий блок catch не найден, JVM останавливает выполнение программы и выводит стек вызовов методов — stack trace, выполнив перед этим код блока finally при его наличии.

Пример обработки исключений:

public class Print {
void print(String s) {
if (s == null) {
return s;
}
}
}

Итоги

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