logo

Undantagshantering i Java

  1. Undantagshantering
  2. Fördel med undantagshantering
  3. Hierarki av undantagsklasser
  4. Typer av undantag
  5. Exempel på undantag
  6. Scenarier där ett undantag kan inträffa

De Undantagshantering i Java är en av de mäktiga mekanism för att hantera körtidsfel så att applikationens normala flöde kan bibehållas.

I den här handledningen kommer vi att lära oss om Java-undantag, dess typer och skillnaden mellan markerade och omarkerade undantag.

mata in sträng i java

Vad är undantag i Java?

Ordbok Betydelse: Undantaget är ett onormalt tillstånd.

I Java är ett undantag en händelse som stör programmets normala flöde. Det är ett föremål som kastas under körning.

Vad är undantagshantering?

Exception Handling är en mekanism för att hantera runtime-fel som ClassNotFoundException, IOException, SQLException, RemoteException, etc.

Fördel med undantagshantering

Kärnfördelen med undantagshantering är för att bibehålla applikationens normala flöde . Ett undantag stör normalt det normala flödet av applikationen; det är därför vi måste hantera undantag. Låt oss överväga ett scenario:

 statement 1; statement 2; statement 3; statement 4; statement 5;//exception occurs statement 6; statement 7; statement 8; statement 9; statement 10; 

Anta att det finns 10 satser i ett Java-program och ett undantag inträffar vid sats 5; resten av koden kommer inte att exekveras, dvs satserna 6 till 10 kommer inte att exekveras. Men när vi utför undantagshantering kommer resten av satserna att köras. Det är därför vi använder undantagshantering i Java .

Vet du?
  • Vad är skillnaden mellan markerade och omarkerade undantag?
  • Vad händer bakom koden int data=50/0;?
  • Varför använda flera fångstblock?
  • Finns det någon möjlighet när det slutliga blocket inte exekveras?
  • Vad är undantagspridning?
  • Vad är skillnaden mellan nyckelordet kast och kast?
  • Vilka är de fyra reglerna för att använda undantagshantering med metodöverstyrning?

Hierarki av Java Exception-klasser

Klassen java.lang.Throwable är rotklassen för Java Exception-hierarkin som ärvs av två underklasser: Exception och Error. Hierarkin för Java Exception-klasser ges nedan:

hierarki för undantagshantering

Typer av Java-undantag

Det finns huvudsakligen två typer av undantag: markerade och omarkerade. Ett fel betraktas som det omarkerade undantaget. Men enligt Oracle finns det tre typer av undantag, nämligen:

  1. Markerat undantag
  2. Omarkerat undantag
  3. Fel
hierarki för undantagshantering

Skillnad mellan markerade och omarkerade undantag

1) Markerat undantag

Klasserna som direkt ärver Throwable-klassen utom RuntimeException och Error är kända som kontrollerade undantag. Till exempel, IOException, SQLException, etc. Markerade undantag kontrolleras vid kompilering.

2) Omarkerat undantag

Klasserna som ärver RuntimeException är kända som omarkerade undantag. Till exempel ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException, etc. Omarkerade undantag kontrolleras inte vid kompilering, men de kontrolleras under körning.

3) Fel

Felet går inte att återställa. Några exempel på fel är OutOfMemoryError, VirtualMachineError, AssertionError etc.

Nyckelord för Java-undantag

Java tillhandahåller fem nyckelord som används för att hantera undantaget. Följande tabell beskriver var och en.

NyckelordBeskrivning
ProvaNyckelordet 'försök' används för att specificera ett block där vi ska placera en undantagskod. Det betyder att vi inte kan använda testblock enbart. Försöksblocket måste följas av antingen catch eller final.
fånga'Fångst'-blocket används för att hantera undantaget. Det måste föregås av ett försöksblock, vilket betyder att vi inte kan använda enbart fångstblock. Det kan följas av att slutligen blockera senare.
till sistBlocket 'slutligen' används för att exekvera den nödvändiga koden för programmet. Den exekveras oavsett om ett undantag hanteras eller inte.
kastaNyckelordet 'kasta' används för att skapa ett undantag.
kastarNyckelordet 'kastar' används för att deklarera undantag. Den specificerar att det kan förekomma ett undantag i metoden. Det ger inget undantag. Den används alltid med metodsignatur.

Exempel på Java-undantagshantering

Låt oss se ett exempel på Java Exception Handling där vi använder en try-catch-sats för att hantera undantaget.

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...'); } } 
Testa det nu

Produktion:

 Exception in thread main java.lang.ArithmeticException:/ by zero rest of the code... 

I exemplet ovan höjer 100/0 ett ArithmeticException som hanteras av ett try-catch-block.

Vanliga scenarier för Java-undantag

Det finns vissa scenarier där okontrollerade undantag kan förekomma. De är följande:

1) Ett scenario där ArithmeticException inträffar

Om vi ​​dividerar ett tal med noll, uppstår ett aritmetiskt undantag.

 int a=50/0;//ArithmeticException 

2) Ett scenario där NullPointerException inträffar

Om vi ​​har ett nollvärde i någon variabel , att utföra valfri operation på variabeln ger en NullPointerException.

 String s=null; System.out.println(s.length());//NullPointerException 

3) Ett scenario där NumberFormatException inträffar

Om formateringen av en variabel eller ett tal inte matchar, kan det leda till NumberFormatException. Anta att vi har en sträng variabel som har tecken; omvandling av denna variabel till siffra kommer att orsaka NumberFormatException.

 String s='abc'; int i=Integer.parseInt(s);//NumberFormatException 

4) Ett scenario där ArrayIndexOutOfBoundsException inträffar

När en array överskrider sin storlek uppstår ArrayIndexOutOfBoundsException. det kan finnas andra orsaker till ArrayIndexOutOfBoundsException. Tänk på följande påståenden.

 int a[]=new int[5]; a[10]=50; //ArrayIndexOutOfBoundsException 

Java Exceptions Index

  1. Java Try-Catch Block
  2. Java Multiple Catch Block
  3. Java Nested Prova
  4. Java Blockera äntligen
  5. Java Throw nyckelord
  6. Java Exception Propagation
  7. Java kastar nyckelord
  8. Java Throw vs Throws
  9. Java Final vs Finally vs Finalize
  10. Java-undantagshantering med metodöverstyrning
  11. Java anpassade undantag