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

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

У Јави се изузеци могу сврстати у два типа:

  • Не проверавају Изузеци: Они нису проверени у време компајлирања, али на води-тиме.Фор пример: ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException, изузеци под Errorкласе, итд
  • Проверени изузеци: Проверавају се током компајлирања. На пример, IOException, InterruptedException, етц.

Погледајте Јава изузетке да бисте детаљно сазнали о потврђеним и непровереним изузецима.

Обично не треба да радимо са непровереним изузецима. То је зато што се непроверени изузеци јављају због програмских грешака. И добра је пракса да се исправљају уместо да се њима рукује.

Ово упутство ће се сада усредсредити на то како поступати са провереним изузецима помоћу throwи throws.

Јава баца кључну реч

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

Његова синтакса је:

 accessModifier returnType methodName() throws ExceptionType1, ExceptionType2… ( // code ) 

Као што видите из горње синтаксе, можемо користити throwsза пријављивање вишеструких изузетака.

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

 import java.io.*; class Main ( public static void findFile() throws IOException ( // code that may produce 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); ) ) ) 

Оутпут

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

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

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

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

Бацање вишеструких изузетака

Ево како можемо да бацимо вишеструке изузетке помоћу throwsкључне речи.

 import java.io.*; class Main ( public static void findFile() throws NullPointerException, IOException, InvalidClassException ( // code that may produce NullPointerException… … … // code that may produce IOException… … … // code that may produce InvalidClassException… … … ) public static void main(String() args) ( try( findFile(); ) catch(IOException e1)( System.out.println(e1.getMessage()); ) catch(InvalidClassException e2)( System.out.println(e2.getMessage()); ) ) ) 

Овде је findFile()метод наводи да се може бацити NullPointerException, IOExceptionи InvalidClassExceptionу својој throwsклаузуле.

Имајте на уму да нисмо обрађивали NullPointerException. То је зато што је то непроверени изузетак. Није потребно то навести у throwsклаузули и руковати њиме.

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

Можда постоји неколико метода које могу изазвати изузетке. Писање try… catchза сваку методу биће заморно, а код постаје дугачак и мање читљив.

throws је такође корисно када сте означили изузетак (изузетак који се мора обрадити) који не желите да ухватите у свом тренутном методу.

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

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

Када се изузме изузетак, ток извршавања програма преноси се из tryблока у catchблок. Кључну throwреч користимо у оквиру методе.

Његова синтакса је:

 throw throwableObject;

Предмет који се може бацити је инстанца класе Throwableили подкласе Throwableкласе.

Пример 2: Кључна реч Јава Јава

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

Оутпут

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

У овом примеру изричито бацамо ArithmeticException.

Напомена: ArithmeticException је непроверени изузетак. Обично није потребно баратати непровереним изузецима.

Пример 3: Бацање провереног изузетка

 import java.io.*; class Main ( public static void findFile() throws IOException ( throw new IOException("File not found"); ) public static void main(String() args) ( try ( findFile(); System.out.println("Rest of code in try block"); ) catch (IOException e) ( System.out.println(e.getMessage()); ) ) ) 

Оутпут

 Фајл није пронађен 

findFile()Метод баца IOExceptionса поруком смо прошли у свом градитељу.

Имајте на уму да пошто је реч о изузећу који је означен, морамо га навести у throwsклаузули.

Методе које позивају ову findFile()методу морају или да обраде овај изузетак или да га throwsсаме наведу помоћу кључне речи.

Овај изузетак смо обрадили у main()методи. Ток извођења програма преноси се из tryблока у catchблок када се изузме изузетак. Дакле, остатак кода у tryблоку се прескаче и catchизвршавају се изрази у блоку.

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