- Undtagelseshåndtering
- Fordel ved undtagelseshåndtering
- Hierarki af undtagelsesklasser
- Typer af undtagelser
- Undtagelseseksempel
- Scenarier, hvor der kan forekomme en undtagelse
Det Undtagelseshåndtering i Java er en af de magtfulde mekanisme til at håndtere runtime fejl så det normale flow af applikationen kan opretholdes.
I denne tutorial lærer vi om Java-undtagelser, dets typer og forskellen mellem markerede og ikke-markerede undtagelser.
java streng til boolesk
Hvad er undtagelse i Java?
Ordbogs betydning: Undtagelse er en unormal tilstand.
I Java er en undtagelse en hændelse, der forstyrrer programmets normale flow. Det er et objekt, der kastes under kørsel.
Hvad er undtagelseshåndtering?
Exception Handling er en mekanisme til at håndtere runtime fejl såsom ClassNotFoundException, IOException, SQLException, RemoteException osv.
Fordel ved undtagelseshåndtering
Kernefordelen ved undtagelseshåndtering er for at opretholde det normale flow af applikationen . En undtagelse forstyrrer normalt applikationens normale flow; derfor skal vi håndtere undtagelser. Lad os overveje et scenarie:
statement 1; statement 2; statement 3; statement 4; statement 5;//exception occurs statement 6; statement 7; statement 8; statement 9; statement 10;
Antag, at der er 10 sætninger i et Java-program, og en undtagelse forekommer ved sætning 5; resten af koden vil ikke blive eksekveret, dvs. udsagn 6 til 10 vil ikke blive eksekveret. Men når vi udfører undtagelseshåndtering, vil resten af sætningerne blive udført. Derfor bruger vi undtagelseshåndtering i Java .
Ved du?
|
Hierarki af Java-undtagelsesklasser
Java.lang.Throwable-klassen er rodklassen i Java Exception-hierarkiet, der er nedarvet af to underklasser: Exception og Error. Hierarkiet af Java Exception klasser er angivet nedenfor:
Typer af Java-undtagelser
Der er hovedsageligt to typer undtagelser: markeret og umarkeret. En fejl betragtes som den umarkerede undtagelse. Men ifølge Oracle er der tre typer undtagelser, nemlig:
- Afkrydset undtagelse
- Ikke markeret undtagelse
- Fejl
Forskellen mellem markerede og umarkerede undtagelser
1) Afkrydset undtagelse
De klasser, der direkte arver Throwable-klassen undtagen RuntimeException og Error, er kendt som kontrollerede undtagelser. For eksempel IOException, SQLException osv. Afkrydsede undtagelser kontrolleres på kompileringstidspunktet.
2) Ikke markeret undtagelse
Klasserne, der arver RuntimeException, er kendt som umarkerede undtagelser. For eksempel ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException osv. Ikke-markerede undtagelser kontrolleres ikke ved kompilering, men de kontrolleres under kørsel.
3) Fejl
Fejlen er uoprettelig. Nogle eksempler på fejl er OutOfMemoryError, VirtualMachineError, AssertionError osv.
Java-undtagelsesnøgleord
Java giver fem nøgleord, der bruges til at håndtere undtagelsen. Følgende tabel beskriver hver enkelt.
Søgeord | Beskrivelse |
---|---|
prøve | Nøgleordet 'try' bruges til at angive en blok, hvor vi skal placere en undtagelseskode. Det betyder, at vi ikke kan bruge prøveblok alene. Prøveblokken skal efterfølges af enten catch eller endelig. |
fangst | 'catch'-blokken bruges til at håndtere undtagelsen. Den skal indledes med try-blok, hvilket betyder, at vi ikke kan bruge catch-blok alene. Det kan efterfølges af endelig blokering senere. |
endelig | 'Endelig'-blokken bruges til at udføre den nødvendige kode for programmet. Den udføres uanset om en undtagelse håndteres eller ej. |
kaste | Nøgleordet 'smid' bruges til at kaste en undtagelse. |
kaster | Nøgleordet 'kast' bruges til at erklære undtagelser. Det specificerer, at der kan forekomme en undtagelse i metoden. Det giver ingen undtagelse. Det bruges altid med metodesignatur. |
Eksempel på Java-undtagelseshåndtering
Lad os se et eksempel på Java Exception Handling, hvor vi bruger en try-catch-sætning til at håndtere undtagelsen.
JavaExceptionExample.java
public class JavaExceptionExample{ public static void main(String args[]){ try{ //code that may raise exception int data=100/0; }catch(ArithmeticException e){System.out.println(e);} //rest code of the program System.out.println('rest of the code...'); } }Test det nu
Produktion:
Exception in thread main java.lang.ArithmeticException:/ by zero rest of the code...
I ovenstående eksempel rejser 100/0 en ArithmeticException, som håndteres af en try-catch-blok.
Almindelige scenarier for Java-undtagelser
Der er givet nogle scenarier, hvor ukontrollerede undtagelser kan forekomme. De er som følger:
1) Et scenarie, hvor ArithmeticException forekommer
Hvis vi dividerer et hvilket som helst tal med nul, opstår der en aritmetisk undtagelse.
int a=50/0;//ArithmeticException
2) Et scenarie, hvor NullPointerException opstår
Hvis vi har en nulværdi i nogen variabel , udførelse af enhver handling på variablen kaster en NullPointerException.
String s=null; System.out.println(s.length());//NullPointerException
3) Et scenarie, hvor NumberFormatException opstår
Hvis formateringen af en variabel eller et tal ikke stemmer overens, kan det resultere i NumberFormatException. Antag, at vi har en snor variabel, der har tegn; konvertering af denne variabel til ciffer vil forårsage NumberFormatException.
String s='abc'; int i=Integer.parseInt(s);//NumberFormatException
4) Et scenarie, hvor ArrayIndexOutOfBoundsException opstår
Når et array overskrider sin størrelse, opstår ArrayIndexOutOfBoundsException. der kan være andre årsager til at opstå ArrayIndexOutOfBoundsException. Overvej følgende udsagn.
int a[]=new int[5]; a[10]=50; //ArrayIndexOutOfBoundsException
Java Exceptions Index
- Java Try-Catch Block
- Java Multiple Catch Block
- Java Nested Prøv
- Java Bloker endelig
- Java-kast søgeord
- Java-undtagelsesudbredelse
- Java kaster nøgleord
- Java-kast vs kast
- Java Final vs Finally vs Finalize
- Java-undtagelseshåndtering med metodetilsidesættelse
- Java tilpassede undtagelser