Ланчани изузеци у Јави
Ланчани изузеци у Јави дозвољавају повезивање једног изузетка са другим, тј. један изузетак описује узрок другог изузетка.
- На пример, размотрите ситуацију у којој метод баца ан АритхметицЕкцептион због покушаја дељења са нулом.
- Али основни узрок грешке је био И/О квар који је довео до тога да делилац буде нула.
- У таквим случајевима уланчани изузеци помажу у ширењу и примарних и основних узрока грешке.
Пример : Следећи пример показује како се користе ланчани изузеци у Јави.
Java // Working of chained exceptions public class Geeks { public static void main ( String [] args ) { try { // Creating an exception NumberFormatException ex = new NumberFormatException ( 'Primary Exception' ); // Setting the cause of the exception ex . initCause ( new NullPointerException ( 'Root cause of the exception' )); // Throwing the exception with a cause throw ex ; } catch ( NumberFormatException ex ) { // Displaying the primary exception System . out . println ( 'Caught Exception: ' + ex ); // Displaying the root cause of the exception System . out . println ( 'Cause of Exception: ' + ex . getCause ()); } } }
Излаз
Caught Exception: java.lang.NumberFormatException: Primary Exception Cause of Exception: java.lang.NullPointerException: Root cause of the exception
Напомена: Ланчани изузеци познати и као угнежђени изузеци омогућавају нам да повежемо узрок са изузетком у Јави. Ово је корисно када желимо да ширимо информације о првобитном узроку изузетка.
Конструктори
- бацити (узрок који се може бацити) : Где је узрок изузетак који изазива тренутни изузетак.
- Тхровабле (Стринг мсг Тхровабле узрок) : Где је мсг порука о изузетку, а узрок је изузетак који изазива тренутни изузетак.
Методе бацања подршке ланчаним изузецима
- гетЦаусе() : Овај метод враћа стварни узрок изузетка.
- инитЦаусе (узрок који се може бацити) : Овај метод поставља узрок за позивање изузетка.
Пример: Коришћење прилагођене поруке са ланчаним изузецима
У Јави можемо уланчавати изузетке користећи конструктор класе Тхровабле.
Java // Use a custom message with chained exception public class Geeks { public static void main ( String [] args ) { try { // Code that might throw an exception int [] n = new int [ 5 ] ; int divisor = 0 ; for ( int i = 0 ; i < n . length ; i ++ ) { int res = n [ i ] / divisor ; System . out . println ( res ); } } catch ( ArithmeticException e ) { // Creating a new exception with // the original as the cause throw new RuntimeException ( 'Error: Division by zero occurred' e ); } } }
Излаз:
Објашњење: У овом примеру низ целих бројева и поставља делилац на 0.
- Унутар блока три покушава да подели сваки елемент низа са 0 што доводи до изузећа АритхметицЕкцептион.
- Овај АритхметицЕкцептион је ухваћен у блоку цатцх где се креира нови РунтимеЕкцептион са оригиналним изузетком, тј. АритхметицЕкцептион као узроком.
- Пошто РунтимеЕкцептион није ухваћен што приказује праћење стека укључујући РунтимеЕкцептион и АритхметицЕкцептион.
Предности ланчаних изузетака:
Предности везаних изузетака су наведене у наставку:
- Овај изузетак помаже у отклањању грешака пружањем детаља о примарним и основним узроцима.
- Поједностављује руковање грешкама тако што омогућава ширење комплетног контекста изузетака.
- Ово побољшава следљивост грешака у сложеним апликацијама.
Недостаци ланчаних изузетака:
- Ако се не користи правилно, може учинити траг стека дужим и тежим за читање.
- Прекомерна употреба може изазвати збуњујуће поруке о грешци ако су изузеци непотребно повезани.
- Програмери морају осигурати да су значајни узроци повезани; иначе може довести у заблуду током отклањања грешака.
Која је главна сврха ланчаних изузетака у Јави?
- А
Да сакријемо основни узрок изузетка
- Б
Повезати један изузетак са другим
- Ц
За побољшање перформанси кода
- Д
Да аутоматски исправите грешке у току рада
Ланчани изузеци омогућавају повезивање једног изузетка са другим да би се показао основни узрок.
Који метод се користи за постављање узрока изузетка?
- А
гетМессаге()
- Б
сетЕкцептион()
- Ц
инитЦаусе()
- Д
инитЦаусе()
Метода инитЦаусе() поставља основни узрок изузетка.
У примеру који тип изузетка је постављен као узрок за НумберФорматЕкцептион?
- А
ИОЕкцептион
- Б
АритхметицЕкцептион
- Ц
НуллПоинтерЕкцептион
- Д
РунтимеЕкцептион
Пример поставља НуллПоинтерЕкцептион као узрок изузетка НумберФорматЕкцептион.
Квиз је успешно завршен Ваш резултат: 2 /3 тачност: 0% Пријавите се да бисте видели објашњење 1 /3 1 /3 < Previous Следећи >