Java, Išimčių tvarkymas yra viena iš veiksmingų priemonių tvarkyti vykdymo klaidas, kad būtų galima išsaugoti reguliarų programos srautą. „Java Exception Handling“ yra mechanizmas, skirtas tvarkyti vykdymo klaidas, tokias kaip ClassNotFoundException, IOException, SQLException, RemoteException ir kt.
Šiame straipsnyje mes sužinosime apie mesti ir išmesti Java, kuri gali apdoroti Java išimtis.
Java metimas
„Java“ raktinis žodis mesti naudojamas norint aiškiai išmesti išimtį iš metodo ar bet kurio kodo bloko. Mes galime ir mesti pažymėta arba nepažymėta išimtis . Raktinis žodis mesti dažniausiai naudojamas tinkintoms išimtims mesti.
Sintaksė Java mesti
throw Instance Example: throw new ArithmeticException('/ by zero');> Tačiau ši išimtis, t. Instancija turi būti tipo Metamas arba poklasis Metamas .
Pavyzdžiui , Išimtis yra išmetamų ir vartotojo nustatytų išimčių poklasis, kuris paprastai išplečia išimties klasę . Skirtingai nuo C++, duomenų tipai, tokie kaip int, char, floats arba nematomos klasės, negali būti naudojami kaip išimtys.
Programos vykdymo eiga sustoja iš karto po to, kai įvykdomas metimo sakinys ir artimiausias uždarymas bandyti blokas patikrinamas, ar jame yra a sugauti teiginys, atitinkantis išimties tipą. Jei jis randa atitikmenį, valdomasis elementas perkeliamas į tą teiginį, kitaip pridedamas bandyti blokas patikrinamas ir pan. Jei nėra atitikimo sugauti randama, tada numatytasis išimčių tvarkytuvas sustabdys programą.
Java metimo pavyzdžiai
1 pavyzdys:
Java
// Java program that demonstrates the use of throw> class> ThrowExcep {> >static> void> fun()> >{> >try> {> >throw> new> NullPointerException(>'demo'>);> >}> >catch> (NullPointerException e) {> >System.out.println(>'Caught inside fun().'>);> >throw> e;>// rethrowing the exception> >}> >}> >public> static> void> main(String args[])> >{> >try> {> >fun();> >}> >catch> (NullPointerException e) {> >System.out.println(>'Caught in main.'>);> >}> >}> }> |
Virtuali atmintis
>
>
Išvestis
Caught inside fun(). Caught in main.>
2 pavyzdys
Java
"masono formulė"
// Java program that demonstrates> // the use of throw> class> Test {> >public> static> void> main(String[] args)> >{> >System.out.println(>1> />0>);> >}> }> |
>
>
Išvestis
Exception in thread 'main' java.lang.ArithmeticException: / by zero>
Java metimai
throws yra Java raktinis žodis, naudojamas metodo paraše, nurodant, kad šis metodas gali sukelti vieną iš išvardytų tipo išimčių. Šių metodų skambinantis asmuo turi tvarkyti išimtį naudodamas „try-catch“ bloką.
Java metimų sintaksė
type method_name(parameters) throws exception_list exception_list is a comma separated list of all the exceptions which a method might throw.>
Programoje, jei yra galimybė iškelti išimtį, kompiliatorius visada mus apie tai įspėja ir privalomai turėtume tvarkyti tą pažymėtą išimtį. Priešingu atveju gausime kompiliavimo laiko klaidą Nepranešta išimtis XXX turi būti sugauta arba paskelbta išmestu . Norėdami išvengti šios kompiliavimo laiko klaidos, išimtį galime tvarkyti dviem būdais:
- Naudodami pabandykite sugauti
- Naudodami metimai raktažodį
Mes galime naudoti raktinį žodį metimai, norėdami perduoti atsakomybę už išimčių tvarkymą skambinančiajam (tai gali būti metodas arba JVM), tada skambintojo metodas yra atsakingas už šios išimties tvarkymą.
dvejetainio paieškos medžio pavyzdys
Java meta pavyzdžius
1 pavyzdys
Java
// Java program to illustrate error in case> // of unhandled exception> class> tst {> >public> static> void> main(String[] args)> >{> >Thread.sleep(>10000>);> >System.out.println(>'Hello Geeks'>);> >}> }> |
>
>
Išvestis
error: unreported exception InterruptedException; must be caught or declared to be thrown>
Paaiškinimas
Aukščiau pateiktoje programoje gauname kompiliavimo laiko klaidą, nes yra išimtis, jei pagrindinė gija užmigo, o kitos gijos gauna galimybę vykdyti main() metodą, kuris sukels InterruptedException.
2 pavyzdys
java ilgas iki eilutės
Java
// Java program to illustrate throws> class> tst {> >public> static> void> main(String[] args)> >throws> InterruptedException> >{> >Thread.sleep(>10000>);> >System.out.println(>'Hello Geeks'>);> >}> }> |
>
>
Išvestis
Hello Geeks>
Paaiškinimas
Aukščiau pateiktoje programoje, naudodami raktinį žodį throws, apdorojome InterruptedException ir išvestį gausime kaip Sveiki Geekai
3 pavyzdys
Java
// Java program to demonstrate working of throws> class> ThrowsExecp {> >static> void> fun()>throws> IllegalAccessException> >{> >System.out.println(>'Inside fun(). '>);> >throw> new> IllegalAccessException(>'demo'>);> >}> >public> static> void> main(String args[])> >{> >try> {> >fun();> >}> >catch> (IllegalAccessException e) {> >System.out.println(>'caught in main.'>);> >}> >}> }> |
von Neumann architektūra
>
>
Išvestis
Inside fun(). caught in main.>
Svarbūs dalykai, kuriuos reikia atsiminti apie metimus Raktinis žodis
- metas raktinis žodis reikalingas tik pažymėtoms išimtims, o raktinio žodžio throws naudojimas nepažymėtoms išimtims yra beprasmis.
- metas raktinis žodis reikalingas tik norint įtikinti kompiliatorių, o metamų raktinio žodžio naudojimas neapsaugo nuo neįprasto programos nutraukimo.
- Metodo raktažodžio pagalba galime pateikti informaciją metodo skambintojui apie išimtį.