Эта статья посвящена некоторым концепциям механизма исключений в Java. Цель написания этой статьи состоит в том, чтобы помочь мне вспомнить эти вещи через долгое время.
1. Механизм исключений
1.1 Механизм исключений относится к тому, как программа обрабатывает ее, когда возникает ошибка. В частности, механизм исключений обеспечивает безопасный канал для выхода программы. Когда возникает ошибка, процесс выполнения программы изменяется и управление программой передается в процессор исключений.
1.2 Традиционный способ справиться со исключениями заключается в том, что функция возвращает специальный результат, чтобы указать, что происходит исключение (обычно этот специальный результат обычно известен как есть), и программа, призывая функцию, отвечает за проверку и анализ результатов, возвращаемых функцией. Это имеет следующие недостатки: например, если функция возвращает -1, это означает, что происходит исключение, но если функция хочет вернуть правильное значение -1, оно будет запутано; читабельность уменьшается, и код программы смешан с кодом, который обрабатывает исключение; Программа, вызывающая функцию, анализирует ошибку, которая требует, чтобы клиент -программист имел глубокое понимание библиотечных функций.
1.3 Процесс обработки исключений
1.3.1 Когда встречается ошибка, метод заканчивается немедленно и не возвращает значение; В то же время выбрасывается объект исключения.
1.3.2 Программа, которая вызывает этот метод, не будет продолжать выполнять, но ищет обработчик исключений, который может обрабатывать исключение и выполнять код в нем.
2 Классификация исключений
2.1 Классификация исключений
2.1.1. Структура наследования исключений: базовый класс - бросаем, ошибки и исключение наследуют бросание, Runtimeexception и ioException и т. Д., А также конкретное runtimeexception наследует runtimeexception.
2.1.2 Ошибка и Runtimeexception и их подклассы становятся неконтролируемыми исключениями, а другие исключения становятся проверенными исключениями.
2.2 Характеристики каждого типа исключения
2.2.1 Система ошибок Система класса ошибок описывает внутренние ошибки и истощение ресурсов в операционной системе Java. Приложения не должны бросать объекты такого типа (обычно бросаются виртуальными машинами). Если возникает такая ошибка, нет ничего, что можно сделать, кроме как попытаться сделать программу безопасно выходить. Поэтому при разработке программирования вы должны уделять больше внимания системе исключений.
2.2.2.
2.2. 2 Например, массивы исключений доступа к доступу можно избежать путем проверки абонентов массива и границ массива.
2.2.2.2 Другие (ioexception и т. Д.) Такие исключения, как это, обычно являются внешними ошибками, такими как попытка считывать данные с конца файла и т. Д. Это не ошибка самой программы, а внешняя ошибка, возникающая в среде приложения.
2.3 Различия от классификации исключений C ++
2.3.1 На самом деле, название класса Runtimeexception в Java не подходит, потому что любое исключение происходит во время выполнения. (Ошибки, которые возникают во время компиляции, не являются исключениями. Другими словами, исключения для решения ошибок, которые возникают во время программы).
2.3.2 Logic_error в C ++ эквивалентно Runtimeexception в Java, в то время как Runtime_Error эквивалентно исключениям типов не-runtimeexception в Java.
3. Как использовать исключения
3.1 Declare Метод бросает исключение
3.1.1 Синтаксис: броски (опущен)
3.1.2 Почему нам нужно объявить метод, чтобы бросить исключение? Независимо от того, бросает ли метод исключение так же важно, как и тип возвращаемого значения метода. Предполагая, что метод бросает исключение, он не заявляет, что метод будет бросить исключение, тогда клиент -программист может вызвать этот метод без написания кода для обработки исключения. Затем, как только происходит исключение, нет подходящего контроллера исключений для решения этого исключения.
3.1.3 Почему исключение брошенного обязательно проверенное исключение? Runtimeexception и ошибка могут быть сгенерированы в любом коде. Они не должны быть брошены программистом. После возникновения ошибки соответствующее исключение будет автоматически брошено. Проверенное исключение брошено программистом, который делится на две ситуации: клиент -программист вызывает функцию библиотеки, которая бросает исключение (исключение библиотечной функции брошено программистом библиотеки); Клиентский программист выбрасывает исключение самим, используя заявление Throw. При столкновении с ошибкой программисты, как правило, бессильны; При столкновении с Runtimeexception, должно быть, в программе существует логическая ошибка, и программа должна быть изменена (эквивалентно методу отладки); Только зарегистрированное исключение - то, о чем заботятся программисты, и программа должна и должна только бросать или обрабатывать проверенное исключение.
3.1.4 ПРИМЕЧАНИЕ. Метод подкласса, охватывающий определенный метод родительского класса, не может добавлять больше исключений, чем метод родительского класса. Следовательно, иногда при разработке метода родительского класса будут объявлены исключения, но фактический код для реализации метода не бросает исключения. Цель этого состоит в том, чтобы облегчить метод подкласса перезаписать метод родительского класса.
3.2 Как сделать исключение
3.2.1 Синтаксис: брось (опущен)
3.2.2 Какое исключение брошено? Для объекта исключения тип объекта действительно полезен, когда исключение имеет тип объекта, а сам объект исключения не имеет смысла. Например, если тип объекта исключения является ClassCastException, то это имя класса является единственной полезной информацией. Следовательно, при выборе того, какое исключение будет брошено, наиболее важным является выбрать название класса исключения, которое может четко объяснить ситуацию исключения.
3.2.3 Обычно существует два конструктора для объектов исключения: один является конструктором без параметров; Другой - это конструктор со строкой, который будет использоваться в качестве дополнительного описания для этого объекта исключения в дополнение к имени типа.
3.2.4 Создайте свое собственное исключение: когда ни одно из встроенных исключений в Java не может четко объяснить ситуацию исключения, вам необходимо создать свое собственное исключение. Следует отметить, что единственная полезная вещь - это информация о названии типа, поэтому не тратьте энергию на дизайн классов исключений.
3.3 Захватить исключения, если исключение не обрабатывается, то для нерафической интерфейсной программы программа будет прервана и информация об исключении вывода; Для программы графического интерфейса информация об исключении также будет выведена, но программа не прерывает, но возвращается в цикл обработки пользовательского интерфейса.
3.3.1 Синтаксис: модули контроллера Try, Catch и, наконец, должны быть сразу за блоком Try. Если исключение добавлено, механизм управления исключениями будет искать первого контроллера, параметры которого соответствуют типу исключения, а затем введет пункт об ущербе и считает, что исключение контролировалось. Поиск контроллера также остановится после завершения пункта о уловах.
3.3.1.1 Поймайте несколько исключений (обратите внимание на синтаксис и порядок захвата) (опущен)
3.3.1.2. Процесс обработки исключений и обработки исключений наконец (опущен)
3.3.2 Что делает обработка исключений? Для Java, из -за сбора мусора, обработка исключений не требует переработки памяти. Тем не менее, есть еще некоторые ресурсы, которые необходимы программистам, например, файлы, сетевые подключения и изображения.
3.3.3 Должен ли метод выбросить исключение или поймать исключение в методе? Принцип: поймать и обрабатывать исключения, которые знают, как справиться, и проходить исключения, которые не знают, как справиться
3.3.4 снова бросьте исключение
3.3.4.1 Почему я снова бросаю исключение? На этом уровне может быть обработана только часть контента, и некоторая обработка должна быть завершена в среде более высокого уровня, поэтому должно быть выброшено исключение. Это позволяет каждому этапу обработчика исключений обрабатывать исключения, которые он может обрабатывать.
3.3.4.2 Блок подъема, соответствующий тому же блоку попытки будет игнорироваться, а исключение брошенного выйдет на более высокий уровень.
4 Другие вопросы об исключениях
4.1. Исключение чрезмерного использования Во -первых, очень удобно использовать исключения, поэтому программисты, как правило, больше не хотят писать коды для обработки ошибок, а просто бросить исключение. Это неправильно. Для полностью известных ошибок, код, который обрабатывает такие ошибки, должен быть записан, чтобы повысить надежность программы. Кроме того, эффективность аномального механизма очень плохая.
4.2 Отделение исключений от обычных ошибок. Для обычных ошибок должны быть записаны коды, касающиеся таких ошибок, чтобы повысить надежность программы. Исключения требуются только для внешних неопределимых и прогнозируемых ошибок времени выполнения.
4.3 Информация, содержащаяся в объектах исключения вообще говоря, единственной полезной информацией для объектов исключения является тип информации. Но при использовании конструктора строки исключений эта строка также можно использовать в качестве дополнительной информации. Вызов getMessage (), toString () или printStackTrace () объекта Exception может получить дополнительную информацию, имя класса и информацию о стеке вызовов соответственно. И последний содержит информацию, которая является суперсет первого.
Обычно используются исключения:
Операции не поддерживаются UnsupportedOperationException
AllogalargumentException нелегальные параметры
IndexoutOfBoundSexception Index исходной
Нелегальное статеэкспений нелегальное государство
Существует определенная разница между ненормальными и обычными предупреждениями. Когда в приложении возникает исключение, нормальный поток инструкции выполняющейся программы будет прерван. То есть код после того, как происходит исключение, не будет выполнен правильно. Это даже запускает операцию отката базы данных.
На платформе разработки Java исключения включают предопределенные исключения и пользовательские исключения. Эти два типа исключения дополняют друг друга. Как квалифицированный разработчик программы, будьте хороши в использовании исключений в приложениях. Это может улучшить интерактивность приложения. В то же время это также является предпосылкой для обеспечения нормальной работы приложения. Поэтому обработка исключений очень важна для разработки отличного приложения. По этой причине автор считает, что разработчики программ должны иметь глубокое понимание общих исключений в приложениях Java. Только когда вы понимаете эти общие исключения, вы можете хорошо справиться с пользовательскими исключениями.
1. Типы и причины общих исключений.
Что касается общих исключений в приложениях Java, автор считает, что разработчики программ должны понимать их из двух аспектов. Во -первых, нам нужно знать, что есть общие исключения для приложений Java, и во -вторых, нам нужно знать, какие причины может вызвать это исключение. Это не только требует, чтобы менеджеры программ обращали внимание на накопление в своей повседневной работе, но также должны собирать информацию из других каналов, если это необходимо. Автор проведет анализ об этом, надеясь, что он поможет всем разработчикам программ.
1. SQLEXCEPTION: Расположение класса исключений базы данных.
Большинство сегодняшних приложений Java полагаются на базы данных для запуска. Этот класс будет инициирован, если ошибка возникает, когда приложение Java связывается с базой данных. В то же время информация об ошибке базы данных будет отображаться пользователю через этот класс. Другими словами, этот класс исключений базы данных операционной базы является мостом для передачи информации об исключении между базой данных и пользователем. Например, пользователь теперь вставляет данные в систему и предусматривает, что определенное поле должно быть уникальным в базе данных. Когда пользователь вставляет данные, если значение этого поля повторяется с существующей записью, он нарушает ограничения уникальности базы данных, и из базы данных будет выпущено сообщение исключения. Эта информация может быть не видна пользователям, потому что она происходит на уровне базы данных. В настоящее время этот класс исключений базы данных операции будет отражать информацию об исключении базы данных и передавать информацию об исключении на передний план. Таким образом, пользователь стойки регистрации может проанализировать причину ошибки на основе этой информации об исключении. Это главная цель этого класса исключений операционной базы данных. В приложениях Java этот класс будет запускаться, когда все операции базы данных будут происходить исключениями. В это время вся оперативная информация о самой Java -приложении часто слишком общей, просто говоря, что в взаимодействии с базой данных есть ошибка, и она не имеет большого эталонного значения. В настоящее время информация о приглашении базы данных более ценна.
2. ClasscastException: исключение преобразования типа данных.
В приложениях Java иногда необходимо преобразовать тип данных. Это преобразование включает отображаемые преобразования и неявные преобразования. Однако, независимо от того, как вы конвертируете, вы должны соответствовать предпосылке, а именно совместимость типов данных. Если этот принцип нарушен во время процесса преобразования данных, исключение преобразования типа данных будет запускается. Например, в приложениях сейчас разработчики должны преобразовать данные даты типа символа в данные типа даты, которые могут быть приняты базой данных. В настоящее время им нужно только контролировать его в приложении на переднем плане, и обычно не будет никаких проблем. Однако, если приложению переднего плана не хватает соответствующего контроля, например, пользователь вводит информацию только при входе в дату, но не имеет информации года. В настоящее время будет появляться исключение, когда приложение выполняет преобразование типа данных. Согласно моему опыту, исключения конверсии типа данных вызывают больше исключений в разработке приложений, а также являются относительно низкими исключениями. Потому что в большинстве случаев в окне приложения можно выполнить некоторый принудительный контроль над типами данных. То есть до того, как тип данных будет преобразован, обеспечена совместимость типа данных. В этом случае не будет легко вызвать исключения конверсии типа данных. Если в полях, которые разрешают только числовые типы, можно устанавливать символы, отличные от численных значений, которые не разрешаются входить. Хотя с механизмом обработки исключений приложение не будет выполнено неправильно. Однако в реальном развитии мы все еще должны предвидеть как можно больше причин ошибок и стараться избегать нарушений.
3. NumberFormateXception: исключение, выброшенное при преобразовании строки в числовой тип.
Во время процесса преобразования типа данных, если это проблема, которая возникает во время процесса преобразования символов в числовое преобразование, в программе Java используется независимое исключение, а именно NumberFormateXception. Например, когда данные типа символа «123456» преобразуются в числовые данные, это разрешено. Однако, если данные типа символа содержит ненуковые символы, такие как 123#56, при преобразовании в числовой тип появится исключение. Система поймает это исключение и обработает его.
В приложениях Java есть много общих классов исключений. Если соответствующее исключение класса не найдено, некоторые исключения класса не разрешаются для доступа, файл завершился исключением, файл не обнаружил исключения, поле не обнаружило исключения и т. Д. Как правило, разработчики системы могут судить тип текущего исключения на основе этого имени исключения. Хотя это хорошо, хорошая память не так хороша, как плохая ручка. Когда это необходимо (особенно при наличии пользовательского исключения), разработчик программы, наконец, имеет список исключений под рукой. В этом случае, независимо от того, обнаруживает ли приложение проблему во время отладки или получает жалобу от пользователя во время операции, вы можете найти причину исключения в зависимости от имени исключения во времени. Это позволяет исключениям быть разрешенным в кратчайшие сроки и восстанавливает нормальную работу приложения. Эта мера использовалась в течение многих лет и очень эффективна.
2. Практические предложения по управлению исключениями.
Для исключений операционной базы данных приложения Java предоставляют только один класс исключений. Следовательно, полагаясь исключительно на информацию об ошибках приложений Java, часто не может помочь персоналу применения исключить причины ошибки. Вы можете только указать, вызвано ли это исключение ошибкой приложения или ошибкой базы данных. Чтобы дополнительно указать причину проблемы, лучше всего объяснить конкретную причину при определении исключений на уровне базы данных. Например, приложение переднего плана может вызвать функции или процедуры базы данных. В настоящее время выполнение хорошей работы в функции или процессе базы данных может объяснить конкретную причину определенного исключения. Например, при генерации другой таблицы, основанной на определенной базовой таблице, определенное поле не может быть пустым и т. Д. После четкого объяснения этой информации об исключении, если вы действительно столкнетесь с аналогичными исключениями, использование класса исключений базы данных изменит информацию об исключении базы данных для пользователя Front-End. Это поможет пользователям найти причину проблемы и исправить ее в кратчайшие сроки. Конечно, это требует координации между программистами Java и дизайнерами баз данных.
Во -вторых, следует отметить, что исключения не являются нормой. Другими словами, большинство нарушений могут быть устранены путем разумного предвидения и предотвращения предпосылки. Если разработать четырехточечные операции, вы можете ограничить значения ввода 0 в поле Ex-Number в окне приложения переднего плана, чтобы устранить возможные исключения во время работы приложения. Тем не менее, это часто требует, чтобы разработчики приложений имели богатый опыт работы и имели строгую логику мышления. Хотя это сложно, автор считает, что разработчики программ все еще должны усердно работать в этом отношении, а не всегда позволять пользователям в качестве отзывов, чтобы пользователи обнаружили ошибки дизайна в приложении. Автор считает, что исключения могут быть брошены только тогда, когда некоторые факторы, которые действительно находятся за пределами контроля программистов. Если разработчики приложений могут знать об этой ошибке, но все же не обращают на нее внимания и не принимают эффективные меры для предотвращения этой аномалии, тогда автор не допустит этого.
Arithmeticexception (исключение с Divisor 0), BufferoverFlowException (исключение переполнения буфера), BufferunderFlowException (исключение буферного подключения), IndexoutOfBoundSexception (Исключение исходящих), NullPointerException (NullPointerException), EmplyStackexcept NegativeArraysizexception, noschelementexception, SecurityException, SystemException, UndEclaredThrowableException
1. java.lang.nullpointerException
Объяснение исключения - «Программа встречается с нулевым указателем». Проще говоря, это означает, что вызывает ненициализированный объект или объект, который не существует, то есть сбивает с толку инициализацию массива с инициализацией элементов массива. Инициализация массива состоит в том, чтобы выделить требуемое пространство на массив. Элементы в инициализированном массиве не являются экземплярами и все еще пусты, поэтому каждый элемент должен быть инициализирован (если вы хотите его назвать)
2. java.lang.classnotfoundexception
Объяснение исключения - «указанный класс не существует».
3. java.lang.arithmeticexexception
Объяснение этого исключения - «исключение математической операции». Например, если в программе появляется такая операция, как деление на ноль, такое исключение произойдет.
4. java.lang.arrayindexoutofboundsexception
Объяснение исключения: «Подписки на массивы находятся за пределами». Большинство программ теперь работают на массивах. Поэтому при вызове массивов вы должны тщательно проверить, превышают ли подписки, которые вы вызовите диапазон массива. Вообще говоря, такие ошибки нелегко, вызывая дисплей (то есть непосредственно с использованием констант для подписания) вызовов), но неявные (то есть с использованием переменных для представления подписок) часто совершают ошибки. Существует другая ситуация, когда длина массива, определенная в программе, определяется определенными конкретными методами и не объявляется заранее. В настоящее время лучше сначала проверить длину массива, чтобы избежать этого исключения.
5. java.lang.illegalargumentException
Объяснение этого исключения - «ошибка параметра метода», например, три значения в методе G.SetColor (int red, int green, int blue). Если их более 255, это исключение также произойдет. Поэтому, как только это исключение будет найдено, нам нужно быстро проверить, существует ли ошибка в параметре, проходящем в вызове метода.
6. java.lang.illegalaccessexception
Объяснение этого исключения - «Нет разрешения на доступ». Это исключение произойдет, когда приложение хочет вызвать класс, но текущий метод не имеет разрешений на доступ к классу. При использовании пакета в программе вы должны обратить внимание на это исключение, исключение и Java
Спасибо за чтение, я надеюсь, что это поможет вам. Спасибо за поддержку этого сайта!