I Java, Undtagelseshåndtering er et af de effektive midler til at håndtere runtime fejl, så det regelmæssige flow af applikationen kan bevares. Java Exception Handling er en mekanisme til at håndtere runtime fejl såsom ClassNotFoundException, IOException, SQLException, RemoteException osv.
javascript streng udskiftning
I denne artikel vil vi lære om throw og kast i Java, som kan håndtere undtagelser i Java.
Java kast
Throw nøgleordet i Java bruges til eksplicit at kaste en undtagelse fra en metode eller en hvilken som helst kodeblok. Vi kan kaste enten markeret eller umarkeret undtagelse . Køreordet throw bruges hovedsageligt til at skabe tilpassede undtagelser.
Syntaks i Java kast
throw Instance Example: throw new ArithmeticException('/ by zero');> Men denne undtagelse, dvs. Forekomst skal være af typen Kan kastes eller en underklasse af Kan kastes .
For eksempel , er en undtagelse en underklasse af Throwable, og brugerdefinerede undtagelser udvider typisk undtagelsesklassen . I modsætning til C++ kan datatyper såsom int, char, float eller ikke-kastbare klasser ikke bruges som undtagelser.
Udførelsesstrømmen af programmet stopper umiddelbart efter at throw-sætningen er udført og den nærmeste omsluttende prøve blok kontrolleres for at se, om den har en fangst erklæring, der matcher typen af undtagelse. Hvis den finder et match, overføres kontrolleret til den erklæring ellers næste vedhæftning prøve blok er kontrolleret, og så videre. Hvis der ikke matches fangst er fundet, vil standard undtagelsesbehandleren standse programmet.
Java-kast eksempler
Eksempel 1:
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.'>);> >}> >}> }> |
>
>
Produktion
Caught inside fun(). Caught in main.>
Eksempel 2
Java
// Java program that demonstrates> // the use of throw> class> Test {> >public> static> void> main(String[] args)> >{> >System.out.println(>1> />0>);> >}> }> |
>
>
Produktion
Exception in thread 'main' java.lang.ArithmeticException: / by zero>
Java kaster
throws er et nøgleord i Java, der bruges i signaturen af en metode for at indikere, at denne metode kan give en af de anførte typeundtagelser. Den, der ringer til disse metoder, skal håndtere undtagelsen ved hjælp af en try-catch-blok.
Syntaks for Java-kast
type method_name(parameters) throws exception_list exception_list is a comma separated list of all the exceptions which a method might throw.>
I et program, hvis der er en chance for at rejse en undtagelse, advarer kompilatoren os altid om det, og vi skal nødvendigvis håndtere den kontrollerede undtagelse, ellers får vi kompileringstidsfejl, der siger urapporteret undtagelse XXX skal fanges eller erklæres for at blive kastet . For at forhindre denne kompileringstidsfejl kan vi håndtere undtagelsen på to måder:
- Ved at bruge try catch
- Ved at bruge kaster søgeord
Vi kan bruge nøgleordet throws til at uddelegere ansvaret for undtagelseshåndtering til den, der ringer (det kan være en metode eller JVM), så er den, der ringer, ansvarlig for at håndtere denne undtagelse.
Java kaster eksempler
Eksempel 1
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'>);> >}> }> |
java system.out.println
>
>
Produktion
error: unreported exception InterruptedException; must be caught or declared to be thrown>
Forklaring
I ovenstående program får vi kompileringstidsfejl, fordi der er en chance for undtagelse, hvis hovedtråden går i dvale, andre tråde får chancen for at udføre main()-metoden, hvilket vil forårsage InterruptedException.
Eksempel 2
Java
installere maven
// Java program to illustrate throws> class> tst {> >public> static> void> main(String[] args)> >throws> InterruptedException> >{> >Thread.sleep(>10000>);> >System.out.println(>'Hello Geeks'>);> >}> }> |
>
>
Produktion
Hello Geeks>
Forklaring
I ovenstående program, ved at bruge throws nøgleordet, håndterede vi InterruptedException, og vi vil få output som Hej nørder
Eksempel 3
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.'>);> >}> >}> }> |
>
>
Produktion
Inside fun(). caught in main.>
Vigtige punkter at huske om kast søgeord
- throws nøgleordet er kun påkrævet for markerede undtagelser, og brugen af throws nøgleordet for ukontrollerede undtagelser er meningsløst.
- throws nøgleordet er kun påkrævet for at overbevise compileren, og brugen af throws nøgleordet forhindrer ikke unormal afslutning af programmet.
- Ved hjælp af throws nøgleordet kan vi give information til den, der ringer til metoden, om undtagelsen.