Јава

Руковање Јава изузетком

Руковање Јава изузетком
Када нормални ток извршења програма прекине било коју грешку, онда се то назива изузећем. Овом врстом догађаја се може управљати помоћу покушај-улов-коначно блокирати. Изузетак је објекат који се користи за хватање грешке и покретање израза на основу услова грешке који се назива руковање изузецима. Руковањем изузецима углавном се обрађују две врсте грешака. Су састављено време грешке и време извођења грешке. Тхе време извођења грешке се решавају руковањем изузецима. Како можете да се носите са изузецима на Јави објашњено је у овом упутству.

Синтакса:

Синтакса покушај-улов-коначно блок је дат у наставку.

покушати
изјава 1… Н

цатцх (ЕкцептионтТипе вар)
изјава 1… Н

коначно
изјава 1… Н

Овде, ако се изузетак догоди унутар блока три, тада ће изузетак бити пребачен на цатцх блок, а коначно блоцк овде није обавезан. Код на крају блока извршава да ли се изузетак јавља или не.

Пример-1: Обрада изузетака са једним блоком улова

Следећи пример приказује употребу руковања изузецима помоћу једног блока улова. Име датотеке ће се узети као улаз и створиће објекат БуффередРеадер да отвори датотеку за читање. Ако назив датотеке постоји, тада ће се садржај датотеке читати ред по ред и штампати. Ако датотека не постоји, генерираће се изузетак и исписат ће се порука о грешци.

импорт јава.ио.БуффередРеадер;
импорт јава.ио.ФилеРеадер;
импорт јава.ио.ИОЕкцептион;
импорт јава.утил.Скенер;
јавни разред осим1
јавна статичка воид главна (Стринг [] аргс)
// Стварање објекта скенера
Скенер у = нови скенер (Систем.ин);
Систем.напоље.принт ("Унесите име датотеке:");
// Узимање података низа од корисника
СтрингНаме Филе = у.следећи();
покушати
// Стварање објекта читача
Читач БуффередРеадер = нови БуффередРеадер (нови ФилеРеадер (Име датотеке));
// Прочитајте први ред ако датотека постоји
Линија низа = читач.реадЛине ();
док (линија != нулл)
// Одштампај ред
Систем.напоље.принтлн (линија);
// Прочитајте следећи ред
линија = читач.реадЛине ();

// Затварање објекта читача
читаоче.Близу();
// Затворимо објекат скенера
у.Близу();
цатцх (ИОЕкцептион е)
// Штампање поруке о грешци
Систем.напоље.принтлн ("Датотека не постоји");


Излаз:

У следећем излазу,  'Здраво.ткт ' је дато као име датотеке које не постоји. Дакле, штампа се следећа порука.

Следећи пут, филе1.ткт је дато као име датотеке које постоји, а излаз приказује садржај датотеке.

Пример-2: Обрада изузетака са вишеструким блоком улова

Начин на који можете користити више блокова цатцх за обраду вишеструких изузетака приказан је у следећем примеру. Овде су проглашена три блока улова. Први блок цатцх ће ухватити аритметичку грешку када се изврши било која нелогична аритметичка операција. Други цатцх боцк ухватиће грешку поља изван домета када ће се покушати прочитати вредност индекса низа која не постоји. Трећи блок цатцх ће ухватити грешку нумеричке вредности када је било који знак или вредност низа дата као вредност низа. У коду се низ са четири индекса декларише и иницијализује целобројним вредностима које ће бити преузете од корисника. Вредности низа се штампају помоћу петље. Операција поделе се врши на крају покушај блока.

импорт јава.утил.Скенер;
јавни разред осим2
јавна статичка воид главна (Стринг [] аргс)

покушати

// Објави нумерички низ
инт нум_арр [] = нови инт [4];
// Стварање објекта скенера
Скенер у = нови скенер (Систем.ин);
Систем.напоље.принтлн ("Унесите четири броја:");
// Поновите петљу четири пута
за (инт и = 0; и < 4; i++)
// Улазни број
инт н = ин.нектИнт ();
// Доделити вредност низу
нум_арр [и] = н;

Систем.напоље.принтлн ("Вредности низа су:");
// Пет пута поновите петљу
за (инт и = 0; и < 4; i++)
// Штампање вредности низа
Систем.напоље.принтлн (нум_арр [и]);

// Поделимо и одштампамо вредност
инт број = 50/0;
Систем.напоље.принт (нум);
// Затворимо објекат скенера
у.Близу();

цатцх (АритхметицЕкцептион е)

Систем.напоље.принтлн ("Ниједан број није дељив са 0");

цатцх (АрраиИндекОутОфБоундсЕкцептион е)

Систем.напоље.принтлн ("Догодила се вредност индекса ван поља");

улов (изузетак е)

Систем.напоље.принтлн ("Вредност броја није дата");


Излаз:

Следећи излаз показује да су вредности низа правилно уметнуте и одштампане, али се извршава трећи блок цатцх јер је 50 подељено са 0, што је грешка.

Програм се изводи по други пут. Када је вредност низа дата као вредност низа, тада се генерише други изузетак и извршава се израз другог блока цатцх.

Пример-3: Руковање изузецима блоком три-цатцх-коначно

Употреба на крају блока са блоком три-цатцх приказана је у следећем примеру. Код коначно блока се извршава ако се догоди изузетак или не. У коду ће се кориснику узети цела вредност. Ако корисник даје било коју вредност низа, онда ИнпутМисматцхЕкцептион

генерисаће и исписати поруку из блока цатцх. Објекат скенера ће бити затворен у коначно блокирај ако изузетак генерише или не.

импорт јава.утил.Скенер;
импорт јава.утил.ИнпутМисматцхЕкцептион;
јавни разред осим3
јавна статичка воид главна (Стринг [] аргс)
// Стварање објекта скенера
Скенер у = нови скенер (Систем.ин);
Систем.напоље.принт ("Унесите број:");
покушати
// Узимање података низа од корисника
инт број = у.нектИнт ();
// Испис броја
Систем.напоље.принтлн ("Вредност броја =" + број);
цатцх (ИнпутМисматцхЕкцептион е)
// Испис поруке о грешци
Систем.напоље.принтлн ("Вредност низа није прихваћена.");

коначно
// Затворимо објекат скенера
у.Близу();
Систем.напоље.принтлн ("Укинуто из програма");


Излаз:

78 је дата као улазна вредност у следећем излазу након извршавања кода. Дакле, овде се не генерише изузетак. Порука из коначно блока се штампа касније.

Следећи, Здраво даје се као улаз након извршавања кода који је низ. Дакле, генерише се изузетак и исписује се порука о грешци из блока цатцх. Порука из коначно блока се штампа касније.

Закључак:

Руковање изузецима је веома важна и корисна карактеристика било ког програмског језика која се може користити за сакривање стварне поруке о грешци од корисника и пружање поруке човеку читљиве поруке о грешци да би корисник правилно разумео грешку. Овај водич помаже кориснику да научи различите начине примене руковања изузецима на Јави и учини свој код прикладнијим.

10 најбољих игара за играње на Убунту-у
Виндовс платформа је била једна од доминантних платформи за играње игара због огромног процента игара које се данас развијају да би подржале Виндовс. ...
5 најбољих аркадних игара за Линук
У данашње време рачунари су озбиљне машине које се користе за игре на срећу. Ако не успете да добијете нови високи резултат, знаћете на шта мислим. У ...
Битка за Веснотх 1.13.6 Развој објављен
Битка за Веснотх 1.13.6 објављено прошлог месеца, шесто је развојно издање у издању 1.13.к сериес и доноси низ побољшања, посебно корисничког интерфеј...