У водичу ћемо научити о различитим приступима руковања изузецима у Јави уз помоћ примера.
У последњем упутству смо сазнали о Јава изузецима. Знамо да изузеци ненормално прекидају извршавање програма.
Због тога је важно поступати са изузецима. Ево листе различитих приступа за руковање изузецима у Јави.
- покушајте … ухватите блок
- коначно блокирати
- баци и баци кључну реч
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клаузули.
Да бисте сазнали више, посетите Јава бацање и бацање.








