У Јави руковање изузетцима је једно од ефикасних средстава за руковање грешкама током извршавања тако да се може очувати регуларни ток апликације. Он обрађује грешке у току извођења као што је НуллПоинтерЕкцептион АрраиИндекОутОфБоундсЕкцептион итд. Да би се ове грешке ефикасно обрадиле, Јава обезбеђује две кључне речи тхров и тхровс.
Јава бацање
Кључна реч тхров у Јави се користи за експлицитно избацивање изузетка из методе или било ког блока кода. Можемо да избацимо или проверени или непроверени изузетак. Кључна реч тхров се углавном користи за избацивање прилагођених изузетака.
Синтакса:
бацити Инстанце
Где је инстанца објекат типа Тхровабле (или његове подкласе као што је Екцептион).
Пример:
тхров нев АритхметицЕкцептион('/ би зеро');
Али овај изузетак, тј. инстанца, мора бити типа Тхровабле или подкласу Тхровабле .
Ток извршавања програма се зауставља одмах након што се изврши наредба тхров и најближи приложени покушајте блок се проверава да би се видело да ли има а ухватити изјава која одговара типу изузетка. Ако открије да је подударање контролисано, преноси се на ту изјаву, иначе следеће прилаже покушајте блок је проверен и тако даље. Ако нема подударања ухватити се пронађе онда ће подразумевани руковалац изузетком зауставити програм.
латекс фонт
Пример: Овај пример показује где се изузетак баци ухваћен и поново избачен унутар методе.
Javaclass Geeks { static void fun() { try { throw new NullPointerException('demo'); } catch (NullPointerException e) { System.out.println('Caught inside fun().'); throw e; // rethrowing the exception } } public static void main(String args[]) { try { fun(); } catch (NullPointerException e) { System.out.println('Caught in main.'); } } }
Излаз
Caught inside fun(). Caught in main.
Објашњење: Горњи пример показује употребу кључне речи тхров за експлицитно избацивање НуллПоинтерЕкцептион. Изузетак је ухваћен унутар забава() методу и поново баци тамо где је затим ухваћен у маин() методи.
Пример: Овај пример показује аритметички изузетак.
Java// Throwing an arithmetic exception class Geeks { public static void main(String[] args){ int numerator = 1; int denominator = 0; if (denominator == 0) { // Manually throw an ArithmeticException throw new ArithmeticException('Cannot divide by zero'); } else { System.out.println(numerator / denominator); } } }
Излаз:
Hangup (SIGHUP)
Exception in thread 'main' java.lang.ArithmeticException: Cannot divide by zero
at Geeks.main(Geeks.java:9)
Објашњење: Горњи пример демонстрира изузетак који користи избацивање где се аритметички изузетак експлицитно баца услед дељења са нулом.
Јава баца
баца је кључна реч у Јави која се користи у потпису методе да укаже да овај метод може да изазове један од наведених изузетака типа. Позивалац ових метода мора да обради изузетак користећи блок три-цатцх.
Синтакса:
тип метход_наме(параметерс) избацује листу изузетака
где је листа изузетака зарезима одвојена листа свих изузетака које метода може да избаци.
У програму, ако постоји шанса да се покрене изузетак, онда нас компајлер увек упозорава на то и ми морамо да обрадимо тај проверени изузетак У супротном ћемо добити грешку у времену компајлирања која каже да непријављени изузетак КСКСКС мора бити ухваћен или проглашен за бачен. Да бисмо спречили ову грешку у времену компајлирања, изузетак можемо да обрадимо на два начина:
- Коришћењем три цатцх
- Коришћењем баца кључна реч
Можемо да користимо кључну реч тхровс да делегирамо одговорност за руковање изузетком позиваоцу (то може бити метод или ЈВМ), а онда је метода позиваоца одговорна за руковање тим изузетком.
асции од а у јава
Пример 1: необрађени изузетак
Javaclass Geeks { public static void main(String[] args) { Thread.sleep(10000); System.out.println('Hello Geeks'); } }
Излаз:
error: unreported exception InterruptedException; must be caught or declared to be thrownОбјашњење: У горњем програму добијамо грешку у времену компајлирања јер постоји шанса за изузетак ако главна нит спава, друге нити добију прилику да изврше маин() метод који ће изазвати ИнтерруптедЕкцептион.
Пример 2: Коришћење throws за руковање изузетком
class Geeks { public static void main(String[] args) throws InterruptedException { Thread.sleep(10000); System.out.println('Hello Geeks'); } }
Излаз:
Hello GeeksОбјашњење: У горњем програму, користећи кључну реч тхровс обрадили смо ИнтерруптедЕкцептион и добићемо излаз као Хелло Геекс.
Пример 3: Додавање изузетка саthrows
class Geeks { static void fun() throws IllegalAccessException { System.out.println('Inside fun(). '); throw new IllegalAccessException('demo'); } public static void main(String args[]) { try { fun(); } catch (IllegalAccessException e) { System.out.println('Caught in main.'); } } }
Излаз
Inside fun(). Caught in main.
Објашњење: Горњи пример баца ИллегалАццессЕкцептион из методе и рукује њиме у главном методу помоћу блока три-цатцх.
Разлика између бацања и бацања
Главне разлике између бацања и бацања у Јави су следеће:
бацити | баца програм наслеђивања у питону |
|---|---|
Користи се за експлицитно избацивање изузетка. | Користи се за декларисање да метода може да избаци један или више изузетака. |
Користи се унутар методе или блока кода. | Користи се у потпису методе. |
Може да избаци и проверене и непроверене изузетке. | Користи се само за проверене изузетке. Непроверени изузеци нису потребни баца |
Метод или блок избацује изузетак. | Позивалац методе је одговоран за руковање изузетком. |
Одмах зауставља тренутни ток извршења. | То приморава позиваоца да обрађује декларисане изузетке. |
тхров нев АритхметицЕкцептион('Еррор'); | публиц воид миМетход() баца ИОЕкцептион {} |