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