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:
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:
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:
Forskellen mellem kast og kast
Klik på mig for detaljerSpørgsmål) Kan vi gengive en undtagelse?
Ja, ved at smide samme undtagelse i catch block.