muzruno.com

Java: изключения и тяхното боравене

Всяка програма ще работи стабилно, само ако неговият източник е дебъглиран и няма условия, които могат да причинят непредвидени ситуации. Процесът на залавяне на възможни повреди се извършва в етапа на програмиране. За да направите това, разработчикът взема предвид всички очаквани резултати и се опитва да ограничи ефекта от грешката, така че да не може да прекъсне програмата или да доведе до нейното срутване.

Когато може да се наложи да се справите с изключенията

В Java изключенията могат да бъдат причинени от неправилно въвеждане на потребителя, липса на ресурс, необходим за стартиране на програмата или внезапно изключване на мрежата. За удобно използване на приложението, създадено от разработчика, е необходимо да се контролира възникването на извънредни ситуации. Потребителят не трябва да чака обесената програма да завърши работата си, да загуби данни в резултат на нелекувани изключения или просто често се появяват съобщения, че нещо се е объркало.

java изключения

Работа с Java изключения

Какво трябва да се има предвид? Езикът на Java има собствена функционалност за обработка на изключения. Разбира се, голяма част от грешките се улавят в етапа на компилация, когато системата автоматично съобщава, че не може да бъде използвана повече. Съществуват обаче и такива изключения, които възникват по време на операцията по програмата. Разработчикът трябва да може да предвиди това и да проектира кода по такъв начин, че да не причинява грешка, но да го третира по специален начин или да премине контрол към друг клон.

В Java това прихващане на изключения се налага от компилатора, така че типичните проблеми са известни и имат свои собствени стандартни схеми за изпълнение.

Типични изключения

Най-простият пример, при който можете да получите изключение, е разделянето. Въпреки цялата си простота, в израз, като делител, може да има нула, което ще доведе до грешка. Е, ако неговият външен вид може да бъде предсказан по-рано и предотвратен. Но тази опция не винаги е налице, така че изключението за улов трябва да се организира директно, когато се случи "разделяне на нула".

В Java механизмът за обработка на грешки изглежда така:

  • На купчината се създава обект на изключване, точно както всеки друг;
  • естественият курс на програмата се прекъсва;
  • механизмът за изключения се опитва да намери алтернативен начин за продължаване на кода;
  • При намиране на мястото за безопасно изпълнение на програмата в обслужващия, работата ще бъде възстановена, или ще бъде направено изключение по специален начин.

Най-простият пример за създаване на грешка може да изглежда така:

ако (a == нула)

хвърля нов NullPointerException ();

Тук променливата a се проверява за инициализация, т.е. не е равно на нулевата референция. В случай, че се появи такава ситуация и е необходима специална обработка, се изхвърля изключение с изхвърляне на новия NullPointerException ().

Няколко подробности за ключовите думи

Когато работите с изключения, често трябва да използвате Java ключови думи, за да се обърнете към действие. На този програмен език има пет от тях:

  • Опитайте. Тази ключова дума вече е срещана и означава, че ще отиде в секция от код, която може да направи изключение. Блокът е ограничен до къдрави скоби {}.
  • Catch. Той закача подходящия тип изключение и го обработва по подходящ начин.
  • Най-накрая. Тази ключова дума е незадължителна и служи за изпълнение на кода, който е необходим във всеки случай, дори и да не бъде задържано изключение. Добавя се веднага след опитния блок.
  • Хвърляне - позволява да създавате Java изключения навсякъде в кода.
  • Хвърля е ключовата дума, която се поставя в подписа на метода. Това означава, че последващият код може да изхвърли Java изключение на посочения тип. Такъв маркер служи като сигнал за разработчиците, което трябва да имате предвид - методът може да не работи както се очаква.

Хвани с опита

Хвърлянето в Java изключение, разбира се, предполага, че ще бъде третиран по специален начин. Най-удобният начин да направите това е, ако кодовата секция е разделена на блок. Което вероятно съдържа изключение. Когато изпълнява такъв код, виртуалната машина намира неочаквана ситуация, разбира, че е в критичния блок и прехвърля контрола към зоната за обработка.

В Java кодът е увит в специален блок, в който може да се изхвърли изключение. По този начин тя поставя няколко неочаквани ситуации наведнъж, които ще бъдат уловени на едно място, без да пълзят по кода.

Най-типичният код с блок за обработка изглежда така:

опитайте {

// Това ще определи кода, който може да направи изключение

} catch (Exception_Type_1 identifier_1) {

Тук се прави изключение по отношение на вида и условията;

} улов (Extraction_type_2 identifier_2) {

Тук се прави изключение по отношение на вида и условията;

}

Ключовата дума за улов информира, че кодът, подложен на проверката на изключението, трябва да бъде обработен, както е описано по-долу, при условие, че съответства на неговия тип. Идентификаторът може да се използва в блока за обработка като аргументи.

накрая

Както стана ясно от предходната глава, блоковете за улов прихващат изключения и ги обработват. Много често обаче има ситуация, при която трябва да се изпълнява код, независимо от това дали са били уловени грешки. За тази цел най-накрая съществува ключова дума. Използва се за увеличаване на стойностите на различни броячи, затваряне на файлове или свързване към мрежата.

java изключение

В тази област са създадени няколко блока на улова с изобретени методи за улавяне на изключения. Например кодът, съдържащ се в опита, генерира неочаквана ситуация от типа Cold. След това израза "Хладен студ!" И "Това ли е нещо, за което да се развесели?" Ще бъдат показани в конзолата. Тоест, най-накрая блокът се изпълнява във всеки случай.

Всъщност има начин да избегнете най-накрая. Свързано е с прекратяването на виртуалната машина. Разберете как това може да стане в интернет.

Хвърлящата ключова дума

Хвърлянето прави изключение. Синтаксисът му изглежда така:

хвърля нова NewException ();



Тук се създава ново изключение с типа NewException (). Като тип можете да използвате класове, които вече са включени в стандартните библиотеки на Java и дефинирани по-рано от разработчика на собствената си продукция.

Такава конструкция е включена в описанието на някакъв метод, който след това трябва да бъде наречен в try block, за да бъде в състояние да го прихване.

Ключова дума хвърля

Какво да направите, ако в процеса на разработка има ситуация, при която методът може да направи изключение, но не може да се справи правилно. За да направите това, подписът на метода указва думите "хвърля" и вида на възможното изключение.

Този етикет е вид указател за разработчиците на клиент, че методът не е в състояние да обработва собственото си изключение. Освен това, ако типът на грешката е проверим, компилаторът изрично посочи това.

Опитайте с ресурси

В Java версия 7, разработчиците са включили такава важна иновация като обработката на try block с ресурси.

Много от обектите, създадени в Java след използването им, трябва да бъдат затворени, за да се спестят ресурси. Преди това трябваше да отчитате и спирате такива случаи ръчно. Сега те имат интерфейс AutoClosable. Тя помага да се затворят автоматично вече използваните обекти, поставени в блока за опита. Благодарение на този подход стана по-удобно да се напише код, чиято четимост значително се увеличи.

Класове изключения по Java

Създателите на описания език за програмиране са взели предвид много аспекти при проектирането на видове непредвидени ситуации. Въпреки това, всички варианти на резултата от събитията не могат да бъдат предотвратени, затова в Java е реализирана възможността да се определят техните собствени изключения, подходящи точно за нуждите на конкретен код.

Най-лесният начин да създадете е да наследявате от най-подходящия за контекста обект.

java изключване списък

Тук наследихте от "Изключение", клас, който се използва за дефиниране на вашите изключения. В MyException има два конструктора - един по подразбиране, а вторият - с аргумента на msg type String.

След това, в публичния клас FullConstructors, се прилага метод f, подписът от който съдържа MyException. Тази ключова дума означава, че f може да изхвърли Java изключение от типа MyException. Освен това, в тялото на метода, текстовата информация се извежда към конзолата и действителното генериране на MyException чрез хвърляне.

Вторият метод се различава леко от първия, тъй като при изхвърляне на изключение се предава низ параметър, който ще се отрази в конзолата, когато бъде заловен. По принцип виждате, че f () и g () са поставени в пробния блок и ключовата дума "catch" е настроена да улови MyException. Резултатът от обработката е изходът на съобщението за грешка към конзолата:

създаване на изключения за java

По този начин беше възможно да се добавят изключения към Java, създадени на ръка.

Изключителна архитектура

Подобно на всички обекти в Java, изключенията са наследени и имат йерархична структура. Основният елемент на всички грешки, изхвърлени в този програмен език, е класа java.lang.Throwable. Наследява два вида - Грешка и Изключение.

изхвърлете изключението за java

Грешка - уведомява за критични грешки и представлява нерегистрирани изключения в Java. Задържането и обработването на такива данни в повечето случаи се извършва на етапа на разработване и не е необходимо да се прилага в кода на окончателното заявление.

Най-често използваният клас за създаване и анализ на изключения е изключението. Което, от своя страна, е разделено на няколко отрасли, включително RuntimeException. RuntimeException се отнася до изключенията по време на изпълнение, т.е. тези, които се случват докато програмата се изпълнява. Всички класове, наследени от него, не могат да бъдат проверени.

Чести изключения

В Java изключенията, списъкът на които е представен по-долу, се използват най-често, затова е полезно да се опише всеки от тях по-подробно:

  • ArithmeticException. Това включва грешки, свързани с аритметични операции. Най-удивителният пример е разделянето на нула.
  • ArrayIndexOutOfBoundsException - достъп до номера на масив елемент, който надвишава общата му дължина.
  • ArrayStoreException - опит за задаване на масив от несъвместим тип.
  • ClassCastException - опит за погрешно разбиране на един тип на друг.
  • IllegalArgumentException - използване на невалиден аргумент в извикването на метода.
  • NegativeArraySizeException е изключение при създаването на масив с отрицателен размер.
  • NullPointerException - неправилно използване на нулева референция.
  • NumberFormatException - възниква, когато низът не се преобразува в число.
  • UnsupportedOperationException - операцията не се поддържа.

Тези примери са неразрешени типове изключения в Java. И така вижте проверени:

  • ClassNotFoundException - класът не е намерен.
  • IllegalAcccessException - ограничаване на достъпа до класа.
  • Прекъсване на изхода - прекъсване на потока.
  • NoSuchFieldException - задължителното поле не съществува.

Тълкуване на изключенията

Говорейки за общи изключения, трябва да се отбележи, че тяхното тълкуване в процеса на развитие може да се възприеме неправилно. След това има малък списък, който обяснява по-подробно кога може да възникне непредвидена ситуация.

java exception types

NullPointerException. Първият път, когато възникне изключение, е да се отнесе към препратка към обект, която е нула. Това важи и за методите на нула инстанция на класа. Може да се изхвърли NullPointerException и ако дължината на масива е равна на нула. Избягвайте подобни ситуации, като периодично проверявате обекти на нула.

ArrayIndexOutOfBoundsException. Всяка програма не може да съществува без използване на масиви. Съответно честото позоваване на тях може да доведе до грешки. Изключение възниква, когато разработчикът се опита да получи достъп до елемент от масив, който не е в списъка с индекси. Например исканата стойност е над или под нулата. Често се появява в резултат на факта, че броят в масива започва от нула.

данни

Обработка на изключения Java е мощен инструмент за околната среда, който много улеснява работата на програмиста и му позволява да създава чист и без грешки код. Състоянието и репутацията на компанията за разработчици зависи от това колко плавно и стабилно функционира приложението.

java грешки изключения

Разбира се, в повече или по-малко прости програми, е много по-лесно да проследявате ситуации на свободна практика. Но в големи автоматизирани комплекси за няколкостотин хиляди линии това е възможно само в резултат на дългосрочно отстраняване на грешки и тестване.

За Java изключения, грешки, които възникват в някои приложения, отделните компании предлагат награди, когато са ентусиасти. Особено ценни са тези, които причиняват нарушаване на политиката за сигурност на софтуерния комплекс.

Споделяне в социалните мрежи:

сроден