Исключения Java - иерархия, обработка и создание исключений
Java уже давно в мире разработки. Несмотря на то, что несколько других языков захватили рынок с гораздо лучшими функциями, Java никуда не денется.
При изучении Java нужно многое понять, например, исключения Java. Исключением в Java является событие, нарушающее нормальное функционирование программы во время выполнения. Это может произойти во время компиляции или выполнения и может быть разных типов. Эти исключения являются нежелательными и имеют фундаментальную иерархию.
Объяснение иерархии исключений Java
Класс Throwable находится в верхней части иерархии исключений, за которой следуют подклассы — Error и Exception. Ошибку и исключение не следует путать как одно и то же, потому что между этими двумя классами существует огромная разница.
Если исключение является нежелательным событием в программе, которое может быть обработано в программе, ошибка не может быть обработана в программе, так как это очень серьезное условие, которое наносит ущерб архитектуре.
Примеры исключений: IllegalArgumentException, ClassNotFoundException и NullPointerException.
Примеры ошибок: InternalError, OutOfMemoryError и AssertionError.
Исключения бывают двух типов: проверенные и неотмеченные. Отмеченные — это исключения во время компиляции, а неотмеченные — исключения во время выполнения. Другие подклассы RuntimeException не отмечены, а кроме этого являются отмеченными.
Давайте лучше разберемся в исключениях и ошибках Java на примерах:
В приведенном ниже примере метод "print" вызывает себя рекурсивно до тех пор, пока не достигнет максимального размера потока Java. После достижения максимального предела он завершает работу с ошибкой StackOverflowError:
public static void print(String myString) {
print(myString);
}
Исключение в потоке "main" java.lang.StackOverflowError
в StackOverflowErrorExample.print(StackOverflowErrorExample.java:6)
Это ошибка, и она не обрабатывается в программе или коде, так как не может быть отлажена. В этом случае код или программа должны измениться.
Отмеченные и неотмеченные исключения
public void writeToFile() {
try (BufferedWriter bw = new BufferedWriter(new FileWriter("myFile.txt"))) {
bw.write("Тест");
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
В приведенном выше коде операторы, написанные в блоке try, выбрасывают IOException. IOException — это проверенное исключение, оно обрабатывается в самой программе, а трассировка стека исключений выводится на консоль, как показано ниже:
Исключение в потоке "main" java.lang.NullPointerException
в IOExceptionExample.writeToFile(IOExceptionExample.java:10)
в IOExceptionExample.main(IOExceptionExample.java:17)
Неотмеченные исключения не должны обрабатываться в коде, поэтому NullPointerException здесь не обрабатывается, обрабатывается только IOException.
Создание исключений Java
Изучение создания исключений в Java не менее важно, чем обработка этих исключений. Эта функция помогает разработчику создавать качественный код и упрощает отладку.
Создание исключения требует использования оператора 'throw' в коде. Упоминается объект исключения, который должен быть выброшен с сообщением. Это сообщение содержит краткую информацию об исключении, таком как проблема с вводом данных, любая проблема, связанная с сервером или серверной частью, и т. д.
Вот как вы можете создать исключение:
throw new Exception("Сообщение об исключении");
Использование ключевого слова Throws
Ключевое слово throws определяет, что метод будет выдавать исключение После того, как создается исключение, вызывающий объект должен обработать его с помощью блока try-catch. Мы можем выбрасывать как отмеченные, так и неотмеченные исключения.
Ключевое слово throws предоставляет сведения о типе исключения, которое может вызвать метод, но не предотвращает прерывание работы программы.
В приведенном ниже примере метод toString() вызывает нулевую ссылку, которая является NullPointerException.
static void testMethod() выдает исключение {
Строковый тест = null;
test.toString();
}
Как обрабатывается это исключение:
public class Example {
public static void main(String[] arg) {
try {
testMethod();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Класс Exception
Разработчик должен знать, как создать и создать исключение. Это помогает более эффективно использовать исключения.
Определение класса исключения выглядит следующим образом: суперкласс всех классов, представляющих восстанавливаемые исключения. Основной целью класса исключений является расширение Throwable. Конструктор отображает два параметра: включенное подробное сообщение, которое предлагает сведения о сообщении для возникшего исключения, и параметр Throwable, предлагающий основную причину исключения.
Пользовательские исключения
Пользовательские исключения в основном предназначены для того, чтобы предоставить разработчику больше контроля, чтобы лучше объяснить исключение пользователю. Встроенные исключения в Java могут не предоставлять достаточно информации, поэтому разработчику необходимо добавить больше к этой информации, настроив исключение. Если исключение возникает во время текущей программы, пользователь должен знать об этом. Пользовательское исключение заключается в предоставлении большего количества данных и разъяснении объяснения.
Итак, как в Java разработчики настраивают исключения? Лучшим ответом является расширение java.lang. Класс исключения с новым классом. Для этого нового класса требуется конструктор родительского класса для хранения ошибки.
Чтобы лучше понять пользовательское исключение, вот пример: предположим, что есть программа, у которой есть проблема с подключением к базе данных, в этом пользовательском исключении можно использовать. Это исключение будет содержать такие сведения, как URL-адрес базы данных, имя пользователя, пароль и т. д. В то время как блок catch может иметь настраиваемую информацию с простым читаемым сообщением для пользователя о том, что программе не удалось подключиться к базе данных.
Обработка исключений в Java
Обработка исключений в Java важна для поддержания нормального протекания программы даже при возникновении непредвиденных событий. Если исключения не будут обработаны, они приведут к сбою приложения, что приведет к разочарованию клиентов. Если приложения, использующие важные пользовательские данные, выходят из строя во время работы пользователя, это приводит к огромному оттоку клиентов. Неожиданный сбой приложения может привести к потере данных.
Чтобы избежать таких ситуаций, необходимо обрабатывать исключения. Сбои системы могут происходить, когда пользователь снова и снова вводит неверные данные или в случае неверных данных. В этих случаях разработчики должны создать исключение вместо того, чтобы позволить системе аварийно завершить работу.
Разработчикам вполне предсказуемо, сколько исключений может выдать фрагмент кода Java. Для бесперебойного функционирования программы лучшей тактикой является явная обработка исключений и беспрепятственное восстановление после нежелательного события. Есть много случаев, когда исключения не могут быть предсказаны, такие исключения называются необработанными исключениями. Их также можно отслеживать, позволяя разработчикам проверять качество кода и надлежащую видимость всей программы, чтобы избежать этих исключений.
Отслеживание исключений Java
Разработчики знают, что исключения случаются во всех кодах или наборах программ, независимо от того, насколько совершенен код. Таким образом, существует процедура отслеживания всех исключений Java путем ведения записи в файле журнала приложения. Этот файл журнала очень помогает текущим разработчикам, поскольку они могут легко открыть файл и отследить все исключения, через которые прошла программа. Эта стандартная процедура применима для небольших приложений, но не совсем для программного обеспечения крупных предприятий. Ручной анализ для отслеживания ошибок в крупномасштабных приложениях приводит к потере трека, неправильному анализу и, в конечном итоге, к отсутствию решения. Таким образом, возникает необходимость в программном обеспечении для мониторинга ошибок. Это программное обеспечение сокращает ручные усилия, классифицируя дубликаты и сообщая разработчикам краткую сводку последних ошибок. Эти автоматизированные инструменты очень полезны для оптимизации данных, которые намного проще понять.
Для небольших приложений легко просматривать файл журнала. Однако корпоративные приложения могут обслуживать тысячи или даже миллионы запросов в секунду. Это делает ручной анализ слишком громоздким, потому что ошибки и их причины могут быть потеряны в шуме. Именно здесь может помочь программное обеспечение для мониторинга ошибок, группируя дубликаты и предоставляя сводные представления основных и самых последних ошибок Java. Они также могут собирать и упорядочивать контекстные данные таким образом, чтобы это было проще и быстрее, чем просмотр журналов.
Перехват определенных исключений Java
Существуют также определенные исключения Java, которые разработчики могут уловить в коде. Это включает в себя специальный код для восстановления. Например, некоторые ошибки Java, возвращенные из REST API, могут быть восстановлены, но некоторые не могут быть восстановлены вообще, поэтому, чтобы поймать восстанавливаемые исключения, вам придется рассматривать их отдельно.
Метод try-catch — лучший способ обработки исключений. Для перехвата определенных исключений Java за блоком try может следовать один или несколько блоков catch, каждый из которых определяет определенный тип. Если в блоке try есть исключение, то исключение выбрасывается в первый блок catch, если оно не перехвачено этим классом, оно передается до тех пор, пока не будет перехвачено или не пропустит все.
Последний блок
Последний блок предназначен для кода, который должен выполняться в каждом случае, независимо от того, есть ли исключение или нет. Это означает, что последний блок выполняется каждый раз.
Обработка неперехваченных исключений Java или исключений Java во время выполнения
Неперехваченные исключения или исключения во время выполнения могут возникать в любое время и в любом коде. Разработчик не получает никаких предупреждений или сигналов о том, что эти исключения могут возникнуть или нет. Java предлагает идеальный способ обработки подобных исключений во время выполнения. Вы можете установить UncaughtExceptionHandler в каждом потоке и перехватывать такие непредсказуемые исключения.
Заключение
Java — это обширный язык, и чтобы стать экспертом, Java-разработчик должен знать многое. Обработка и создание исключений — это такие функции, которые следует интегрировать с программами, чтобы сделать программу и результирующее приложение удобными для пользователя. Приведенные выше детали и информация делают совершенно очевидным, что изучение исключений в Java является важной и совершенно новой темой для хорошего Java-разработчика. Управление, отслеживание и обработка исключений могут быть сложными во многих случаях. Вы должны управлять всеми исключениями в режиме реального времени и улучшать взаимодействие с пользователем.
Вы ищете команду разработчиков Java для улучшения разработки программного обеспечения Java? Programmers.io будет лучшим выбором для вас.
Комментарии
Отправить комментарий