Java kalboje išimtis yra nepageidaujamas arba netikėtas įvykis, įvykęs programos vykdymo metu. Kai įvyksta išimtis, programos vykdymas nutraukiamas. Norėdami išvengti šių nutraukimo sąlygų, „Java“ galime naudoti bandomąjį gaudymo bloką. Šiame straipsnyje sužinosime apie „Išbandykite, gaudyk, mesk ir mesk“ „Java“.
Kodėl atsiranda išimtis?
Išimtis gali atsirasti dėl kelių priežasčių, pvz., tinklo ryšio problemos, netinkamo vartotojo pateikto įvesties, neegzistuojančio failo atidarymo programoje ir kt.
Išimčių tvarkymui naudojami blokai ir raktiniai žodžiai
1. pabandyk su Java
The bandyti bloke yra teiginių rinkinys, kuriame gali atsirasti išimtis.
try { // statement(s) that might cause exception }> 2. sugauti Java
Sugavimo blokas naudojamas neapibrėžtai bandomojo bloko būklei valdyti. Po bandymo bloko visada seka gaudymo blokas, kuris apdoroja išimtį, atsirandančią susijusiame bandymo bloke.
catch { // statement(s) that handle an exception // examples, closing a connection, closing // file, exiting the process after writing // details to a log file. }> 3. mesti Java
Raktinis žodis mesti naudojamas valdymui perkelti iš try bloko į gaudymo bloką.
Toliau pateikiamas pirmiau minėto metodo įgyvendinimas:
Java
// Java program that demonstrates the use of throw> class> ThrowExcep {> >static> void> help()> >{> >try> {> >throw> new> NullPointerException(>'error_unknown'>);> >}> >catch> (NullPointerException e) {> >System.out.println(>'Caught inside help().'>);> >// rethrowing the exception> >throw> e;> >}> >}> >public> static> void> main(String args[])> >{> >try> {> >help();> >}> >catch> (NullPointerException e) {> >System.out.println(> >'Caught in main error name given below:'>);> >System.out.println(e);> >}> >}> }> |
r c kalba
>
>Išvestis
paprasta python programa
Caught inside help(). Caught in main error name given below: java.lang.NullPointerException: error_unknown>
4. meta Java
The metimai raktinis žodis naudojamas išimtims tvarkyti be try & catch bloko. Jame nurodomos išimtys, kurias metodas gali pateikti skambinančiajam ir pats neapdoroja.
Toliau pateikiamas pirmiau minėto metodo įgyvendinimas:
Java
// Java program to demonstrate working of throws> class> ThrowsExecp {> >// This method throws an exception> >// to be handled> >// by caller or caller> >// of caller and so on.> >static> void> fun()>throws> IllegalAccessException> >{> >System.out.println('Inside fun(). ');> >throw> new> IllegalAccessException('demo');> >}> >// This is a caller function> >public> static> void> main(String args[])> >{> >try> {> >fun();> >}> >catch> (IllegalAccessException e) {> >System.out.println('caught in main.');> >}> >}> }> |
>
>Išvestis
Inside fun(). caught in main.>
5. pagaliau Java
Jis vykdomas po gaudymo bloko. Mes naudojame jį tam, kad įdėtume bendrą kodą (kuris turi būti vykdomas neatsižvelgiant į tai, ar buvo išimtis, ar ne), kai yra keli gaudymo blokai.
Toliau pateikiamas sistemos sugeneruotos išimties pavyzdys:
dvejetainių medžių rūšys
Exception in thread 'main' java.lang.ArithmeticException : divide by zero at ExceptionDemo.main(ExceptionDemo.java:5) ExceptionDemo: The class name main:The method name ExceptionDemo.java:The file name java:5:line number>
Toliau pateikiamas pirmiau minėto metodo įgyvendinimas:
Java
// Java program to demonstrate working of try,> // catch and finally> class> Division {> >public> static> void> main(String[] args)> >{> >int> a =>10>, b =>5>, c =>5>, result;> >try> {> >result = a / (b - c);> >System.out.println('result' + result);> >}> >catch> (ArithmeticException e) {> >System.out.println('Exception caught:Division by zero');> >}> >finally> {> >System.out.println('I am in>final> block');> >}> >}> }> |
>
>Išvestis
Exception caught:Division by zero I am in final block>
„Java“ bandymo blokavimo DUK
1. Kada turėtumėte naudoti bandomuosius gaudymo blokus?
Išbandykite gaudymo blokus, kad būtų išvengta išimčių, kad kodas nenutrūktų prieš visišką vykdymą.
2. Kas yra mesti ir išmesti Java?
Metimas naudojamas valdymui perkelti iš try bloko į gaudymo bloką. Tuo tarpu metimai naudojami išimčių valdymui be try & catch bloko. Metimai nurodo išimtis, kurias metodas gali pateikti skambinančiajam ir pats neapdoroja.
3. Ar galime turėti du gaudymo blokus?
Taip, mes galime turėti kelis gaudymo blokus su try teiginiais.