Руковање изузецима Јава (са примерима)

У водичу ћемо научити о различитим приступима руковања изузецима у Јави уз помоћ примера.

У последњем упутству смо сазнали о Јава изузецима. Знамо да изузеци ненормално прекидају извршавање програма.

Због тога је важно поступати са изузецима. Ево листе различитих приступа за руковање изузецима у Јави.

  • покушајте … ухватите блок
  • коначно блокирати
  • баци и баци кључну реч

1. Јава покушај … цатцх блоцк

Блок три-цатцх се користи за обраду изузетака у Јави. Ево синтаксе try… catchблока:

 try ( // code ) catch(Exception e) ( // code )

Овде смо унутар tryблока поставили код који би могао генерисати изузетак . Сваки tryблок прати catchблок.

Када се догоди изузетак, catchблокира га блок. catchБлок не може да се користи без tryблока.

Пример: Руковање изузетком помоћу три… цатцх

 class Main ( public static void main(String() args) ( try ( // code that generate exception int divideByZero = 5 / 0; System.out.println("Rest of code in try block"); ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) ) )

Оутпут

 АритхметицЕкцептион => / нула

У примеру покушавамо да број поделимо са 0. Овде овај код генерише изузетак.

Да бисмо обрадили изузетак, ставили смо код 5 / 0унутар tryблока. Сада када се догоди изузетак, остатак кода унутар tryблока се прескаче.

catchБлок хвата изузетак и изјаве унутар цатцх блока се извршава.

Ако ниједан израз у tryблоку не генерише изузетак, catchблок се прескаче.

2. Јава коначно блокира

У Јави се finallyблок увек извршава без обзира да ли постоји изузетак или не.

finallyБлок није обавезан. И за сваки tryблок може постојати само један finallyблок.

Основна синтакса finallyблока је:

 try ( //code ) catch (ExceptionType1 e1) ( // catch block ) finally ( // finally block always executes )

Ако се догоди изузетак, finallyблок се извршава након try… catchблока. У супротном, извршава се након блока три. За сваки tryблок може бити само један finallyблок.

Пример: Јавно руковање изузецима коришћењем коначно блока

 class Main ( public static void main(String() args) ( try ( // code that generates exception int divideByZero = 5 / 0; ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) finally ( System.out.println("This is the finally block"); ) ) )

Оутпут

 АритхметицЕкцептион => / по нули Ово је коначно блок

У горњем примеру делимо број са 0 унутар tryблока. Овде овај код генерише ArithmeticException.

Изузетак захваћа catchблок. И тада finallyсе извршава блок.

Напомена : Добра је пракса користити finallyблок. То је зато што може садржати важне кодове за чишћење, попут,

  • код који се случајно може прескочити повратком, наставком или прекидом
  • затварање датотеке или везе

3. Кључна реч Јава бацање и бацање

Кључна throwреч Јава се користи за изричито избацивање једног изузетка.

Када смо throwизузетак, ток програма се креће од tryблока до catchблока.

Пример: Руковање изузетком помоћу Јава бацања

 class Main ( public static void divideByZero() ( // throw an exception throw new ArithmeticException("Trying to divide by 0"); ) public static void main(String() args) ( divideByZero(); ) )

Оутпут

 Изузетак у нити "маин" јава.ланг.АритхметицЕкцептион: Покушај поделе са 0 на Маин.дивидеБиЗеро (Маин.јава:5) на Маин.маин (Маин.јава:9)

У горњем примеру изричито бацамо кључну реч ArithmeticExceptionусинг throw.

Слично томе, throwsкључна реч се користи за декларацију врсте изузетака који се могу појавити у оквиру методе. Користи се у декларацији методе.

Пример: Јава баца кључну реч

 import java.io.*; class Main ( // declareing the type of exception public static void findFile() throws IOException ( // code that may generate IOException File newFile = new File("test.txt"); FileInputStream stream = new FileInputStream(newFile); ) public static void main(String() args) ( try ( findFile(); ) catch (IOException e) ( System.out.println(e); ) ) )

Оутпут

 јава.ио.ФилеНотФоундЕкцептион: тест.ткт (Систем не може пронаћи наведену датотеку)

Када покренемо овај програм, ако датотека тест.ткт не постоји, FileInputStreamбаца а FileNotFoundExceptionкоја проширује IOExceptionкласу.

findFile()Метод наводи да је IOExceptionмогао да буде. main()Метод позива овај метод и обрађује изузетак ако је бачен.

Ако се метода не бави изузецима, врста изузетака који се могу појавити у њој мора бити наведена у throwsклаузули.

Да бисте сазнали више, посетите Јава бацање и бацање.

Занимљиви Чланци...