Изключения, Може да се изхвърли, изключение
Тази статия се обсъжда как да се използват Java механизъм обработка на изключения. Изключение в Java - обект, който описва изключително условие е възникнала в някой от секцията код. Когато има изключителна държавна, създава обект от клас Exception. Този обект е изпратен на метода, който ще работи с този тип изключение. Изключения могат да се вълнувам и да се информира за някои извънредни ситуации.
Механизмът на изключения в Java се поддържа от пет ключови думи:
По-долу е общ вид на блока на обработка на изключения.
На върха на йерархията на изключения трябва да се изхвърли клас. която се унаследява от обекта. Всеки един от видовете изключения подклас Може да се изхвърли. Две незабавно наследник на Throwable йерархията клас се разделя на две подкатегории на изключения различни браншове. Йерархията на клас е представен на фигурата.
Клас Ehception използва за описване на извънредното положение, че трябва да бъдат прихванати от програмния код на потребителя. клас Грешка е предназначена да опише на изключенията, които при нормални обстоятелства не би трябвало да бъдат прихванати в потребителската програма.
Изключени обекти се създават автоматично от Java околната среда в резултат на някои извънредни ситуации. Пример програми, което създава изключение когато се раздели от нула.
Конзолата ще се появи следното съобщение.
Обръща се внимание на факта, че видът не е бил повдигнат изключение Изключение и се изхвърли. Това е подклас на класа изключение. а именно: ArithmeticException. обяснява какво е възникнала грешката по време на изпълнението на програмата.
Променете класа на добавянето на статичен метод подпрограма. което ще създаде същото изключение.
Съобщение на програмата показва как изключение манипулатор на системата Java показва цялото съдържание на стека на повикване.
За да се защити кода от изключения трябва да използват блокове, свързани с ключови думи, опитайте улов; улов се поставя веднага след опит блок. В блока на улов се определя тип изключение да бъдат обработени.
Целта на най-добър дизайн на улова -Chapters обработвал настъпили изключение и привеждане на променливите програма в разумен състояние - е, че програмата може да продължи, като че ли няма грешки и не бяхме (в нашия пример, предупреждение - деление на нула).
Няколко части от улова
В някои случаи, код блок може да доведе до различни видове изключения. С цел да се локализира лечението на подобни ситуации, е възможно да се използват множество -Chapters за улов пробвам-блок. Блокове най профилирани паралелки изключения трябва да са на първо място, защото никой не подклас няма да бъде постигната, ако го сложите след суперкласа.
В този пример, заловени два различни вида изключения, и тези две специализирани процесори трябва да бъдат част от обща декларация цел улов, прихващане на всички подкласове на Може да се изхвърли.
Този пример, който върви без параметри, предизвиква разделението на възбуждане изключение от нула. Ако един или повече параметри, като по този начин за определяне "А" на стойност по-голяма от нула, изключение ще бъдат повдигнати индекс продукция в чужбина ArrayIndexOutOfBounds масив е обозначено на командния ред. Показани са резултатите от тази програма, както и провеждането на друг метод.
Вложени пробвам
изявление Опит може да бъде вложен. Ако се опитате изявление ниско никой раздел улов. съответстваща на изключение е хвърлен, стека е разположена до една степен по-горе, и търси подходящ манипулатор ще бъдат проверени форумите улов ограждащи изявление опитам. Пример за вграждане двама оператори, които се опитват хвана един от друг с помощта на метод повикването.
Програмата може изрично да предизвика изключение използвате оператора хвърлят. След изпълнение на тъч от процеса на програмата е спряно, както и последващите отчети не са изпълнени. JVM гледа най-близките блокове опитате. хване. подходящ вид изключение за "прехвърляне на контрола". Ако не бъде намерен подходящ блок, манипулатор изключение ще спре програмата и "Печат" със състоянието на стека на повикване.
изключване на един пример, в който за пръв път въвежда изключение обект, а след изявлението на един хвърлей за повишаване на изключения, а след това същото изключение е повдигнат отново - този път за кода, за да го прихване за първата част на улова на време.
Изходът от програмата е дадена по-долу.
Ако даден метод може да се хвърлят изключения, което от своя страна не се справя, той трябва да обяви това, за да си създават други методи, за да се предпазят от тези изключения. За да посочите списък с изключения, които могат да се задействат от, ключовата дума хвърля.
Резултатът от този пример:
В случай, че трябва да се извърши е гарантирана определена област код, трябва да използвате ключовата дума накрая. Използвайки опита за комуникация. най-накрая дава възможност за изпълнение на код, независимо от какъв вид изключения са повдигнати и е спрян, дори и в случаите, при които не е подходящ метод възвишение изключение на улова.
Във всеки раздел, опитайте се да бъде най-малко един дял или за улов или най-накрая да го блокира. Най-накрая блок е много полезна за затваряне на файлове и освобождаване на всички останали ресурси, заснети за временно ползване в началото на метода.
По-долу е пример за един клас с два метода, завършването на който има по различни причини, но както преди излизането, кодът накрая секция.
В метода от Тест Пример Метод А изключение се повишава. Но преди преждевременно излизане от блока опитам. за най-накрая секция. При втория метод methodB финализирана в отчета за опит -блок- замяна. Но в същото, преди да излезете на метода се извършва най-накрая код блок. В резултат на случай на тест:
Обработка на изключенията в Java осигурява изключително мощен механизъм за управление на сложни програми. Ключови думи опитват, хвърля, улов се даде възможност за обработка на грешки, както и различни непредвидени в програмата.
хване - полиморфна структура, т.е. улов по вид на майка хваща изключения от всякакъв вид, което е Parent'om.
В резултат на това на конзолата ще видим
Изключение и грешка на паралелните клонове на Може да се изхвърли на наследяване. Затова разберете един "брат" не може да хване другия "брат".
В резултат на програмата отговарят на следните