Java >> Java tutorial >  >> Tag >> final

Brug endelig blok i java | Undtagelseshåndtering

Endelig er blokering i java meget vigtig, den har afgørende udsagn, der skal udføres, uanset om der opstår en undtagelse eller ej. En "endelig bock" bruges med en try-catch blok i java. Det følger prøv eller fangblok.

Vigtigt: Java endelig blok udføres altid uanset om en undtagelse håndteres eller ej. I nogle tilfælde vil det fejle- Når endelig blokering ikke udføres.

Eksempel på endelig blokering i java

Vi vil se flere eksempler med forskellige sager.

Tilfælde 1:Uden undtagelse

Vi vil kontrollere en "endelig blokering" udført eller ej, hvis der ikke er nogen undtagelse på prøveblokken.

public class FinallyBlock {

    public static void main(String args[]){
        try{
            float data=95/9f;
            System.out.println(data);
        }
        catch(NullPointerException e){
            System.out.println(e);
        }
        finally {
            System.out.println("finally block is always executed");
        }
    }
}

Output:

10,555555
endelig udføres blokering altid

Tilfælde 2:Undtagelse forekommer

I dette tilfælde vil vi kontrollere, hvad hvis undtagelse forekommer og håndteres .

public class FinallyBlock {

    public static void main(String args[]) {
        try {
            int data = 5 / 0;
            System.out.println(data);
        } catch (ArithmeticException e) {
            System.out.println(e);
        } finally {
            System.out.println("finally block is always executed");
        }
    }
}

Output:

java.lang.ArithmeticException:/ med nul
endelig udføres blokering altid

Sp:Når endelig blokering ikke udføres i java?

Svar: Hvis System.exit() påberåbes i en prøveblok, så kalder "endelig blokering" ikke. Se nedenstående eksempel:-

public class Hello {
 
    public static void main(String args[]){
        try {
            int a=10,b=30;
            int c = b/a;
            System.out.println(c);
            System.exit(0);
        } catch(ArithmeticException ae){
            System.out.println(ae);
        } finally {
            System.out.println("finally block is always executed");
        }
    }  
}

For at vide mere om det:– Når blokeringen endelig ikke udføres

Sp:Hvorfor skal du endelig bruge java?

Svar :Du kan bruge endelig i java for at undgå at få oprydningskoden omgået ved et uheld af en return , continue eller break . Indsætter oprydningskode i en finally blokering er altid en god praksis, selv når der ikke forventes nogen undtagelser.

Typisk bruges det til at lukke filer, netværksforbindelser osv.

Spørgsmål:Kan vi bruge Java til at prøve og endelig blokere uden en catch?

Svar: Ja, du kan bruge try and finally sammen uden catch-blok. Som du ved, udføres blokering altid, selvom du har en undtagelses- eller retursætning i try-blokken undtagen i tilfælde af System.exit().

Se nedenstående eksempel for det:-

public class FinallyBlock {

    public static void main(String args[]){
        try{
            int data=9/0;
            System.out.println(data);
        }
        finally {
            System.out.println("finally block is always executed");
        }
    }
}

Output: du kan se en fejl, men stadig blokeringskoden eksekveret.

Skriv en kommentar, hvis du er i tvivl og forslag til denne øvelse.

Bemærk: Dette eksempel (Projekt) er udviklet i IntelliJ IDEA 2018.2.6 (Community Edition)
JRE:11.0.1
JVM:OpenJDK 64-Bit Server VM af JetBrains s.r.o
macOS 10.14.1
Java version 11
Alle Java try catch Java Eksempel-koder er i Java 11, så det kan ændre sig på anderledes end Java 9 eller 10 eller opgraderede versioner.


Java tag