logo

mesti ir įmesti Java

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:

  1. Naudodami pabandykite sugauti
  2. 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į.