logo

Java kaster nøgleord

Det Java kaster nøgleord bruges til at erklære en undtagelse. Det giver en information til programmøren om, at der kan forekomme en undtagelse. Så det er bedre for programmøren at levere undtagelseshåndteringskoden, så programmets normale flow kan opretholdes.

Undtagelseshåndtering bruges hovedsageligt til at håndtere de kontrollerede undtagelser. Hvis der opstår en ukontrolleret undtagelse, såsom NullPointerException, er det programmørers skyld, at han ikke tjekker koden, før den bliver brugt.

Hent youtube-videoer på vlc

Syntaks for Java-kast

 return_type method_name() throws exception_class_name{ //method code } 

Hvilken undtagelse skal erklæres?

Flere år: Kun afkrydset undtagelse, fordi:

    umarkeret undtagelse:under vores kontrol, så vi kan rette vores kode.fejl:uden for vores kontrol. For eksempel kan vi ikke gøre noget, hvis der opstår VirtualMachineError eller StackOverflowError.

Fordelen ved Java kaster nøgleord

Nu kan afkrydset undtagelse udbredes (viderestilles i opkaldsstak).

Det giver oplysninger til den, der ringer til metoden, om undtagelsen.

Java kaster Eksempel

Lad os se eksemplet med Java throws-klausul, som beskriver, at markerede undtagelser kan udbredes med throws-nøgleord.

Testthrows1.java

 import java.io.IOException; class Testthrows1{ void m()throws IOException{ throw new IOException('device error');//checked exception } void n()throws IOException{ m(); } void p(){ try{ n(); }catch(Exception e){System.out.println('exception handled');} } public static void main(String args[]){ Testthrows1 obj=new Testthrows1(); obj.p(); System.out.println('normal flow...'); } } 
Test det nu

Produktion:

datatyper i java
 exception handled normal flow... 

Regel: Hvis vi kalder en metode, der erklærer en undtagelse, skal vi enten fange eller erklære undtagelsen.

Der er to tilfælde:

    Case 1:Vi har fanget undtagelsen, dvs. vi har håndteret undtagelsen ved hjælp af try/catch-blok.Tilfælde 2:Vi har erklæret undtagelsen, dvs. specificeret throws nøgleord med metoden.

Tilfælde 1: Håndter undtagelse ved hjælp af try-catch blok

I tilfælde af at vi håndterer undtagelsen, vil koden blive eksekveret fint, uanset om der opstår en undtagelse under programmet eller ej.

Testthrows2.java

 import java.io.*; class M{ void method()throws IOException{ throw new IOException('device error'); } } public class Testthrows2{ public static void main(String args[]){ try{ M m=new M(); m.method(); }catch(Exception e){System.out.println('exception handled');} System.out.println('normal flow...'); } } 
Test det nu

Produktion:

 exception handled normal flow... 

Tilfælde 2: Erklære undtagelse

  • I tilfælde af at vi erklærer undtagelsen, hvis undtagelsen ikke forekommer, vil koden blive eksekveret fint.
  • I tilfælde af at vi erklærer undtagelsen, og undtagelsen opstår, vil den blive kastet under kørsel, fordi kaster håndterer ikke undtagelsen.

Lad os se eksempler på begge scenarier.

kantet materiale

A) Hvis undtagelse ikke forekommer

Testthrows3.java

 import java.io.*; class M{ void method()throws IOException{ System.out.println('device operation performed'); } } class Testthrows3{ public static void main(String args[])throws IOException{//declare exception M m=new M(); m.method(); System.out.println('normal flow...'); } } 
Test det nu

Produktion:

 device operation performed normal flow... 

B) Hvis der forekommer undtagelse

Testthrows4.java

 import java.io.*; class M{ void method()throws IOException{ throw new IOException('device error'); } } class Testthrows4{ public static void main(String args[])throws IOException{//declare exception M m=new M(); m.method(); System.out.println('normal flow...'); } } 
Test det nu

Produktion:

Java-kast søgeord

Forskellen mellem kast og kast

Klik på mig for detaljer

Spørgsmål) Kan vi gengive en undtagelse?

Ja, ved at smide samme undtagelse i catch block.