Java Exception Handling (med exempel)

I handledningen lär vi oss om olika tillvägagångssätt för undantagshantering i Java med hjälp av exempel.

I den senaste handledningen lärde vi oss Java-undantag. Vi vet att undantag onormalt avslutar genomförandet av ett program.

Det är därför det är viktigt att hantera undantag. Här är en lista över olika metoder för att hantera undantag i Java.

  • försök … fånga block
  • slutligen blockera
  • kasta och kasta nyckelord

1. Java-försök … fångstblock

Try-catch-blocket används för att hantera undantag i Java. Här är syntaxen för try… catchblock:

 try ( // code ) catch(Exception e) ( // code )

Här har vi placerat koden som kan generera ett undantag inuti tryblocket. Varje tryblock följs av ett catchblock.

När ett undantag inträffar fångas det av catchblocket. Den catchblocket kan inte användas utan tryblock.

Exempel: Undantagshantering med try … catch

 class Main ( public static void main(String() args) ( try ( // code that generate exception int divideByZero = 5 / 0; System.out.println("Rest of code in try block"); ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) ) )

Produktion

 ArithmeticException => / med noll

I exemplet försöker vi dela ett tal med 0. Här genererar den här koden ett undantag.

För att hantera undantaget har vi lagt koden 5 / 0inuti tryblocket. Nu när ett undantag inträffar tryhoppas resten av koden inuti blocket.

Den catchblocket fångar undantaget och uttalanden inne fångsten blocket exekveras.

Om inget av påståendena i tryblocket genererar ett undantag catchhoppas blocket över.

2. Java slutligen blockera

I Java finallykörs blocket alltid oavsett om det finns ett undantag eller inte.

Det finallyblocket är valfritt. Och för varje tryblock kan det bara finnas ett finallyblock.

Den grundläggande syntaxen för finallyblock är:

 try ( //code ) catch (ExceptionType1 e1) ( // catch block ) finally ( // finally block always executes )

Om ett undantag inträffar finallykörs try… catchblocket efter blocket. Annars körs den efter försöksblocket. För varje tryblock kan det bara finnas ett finallyblock.

Exempel: Java Exception Handling med slutligt block

 class Main ( public static void main(String() args) ( try ( // code that generates exception int divideByZero = 5 / 0; ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) finally ( System.out.println("This is the finally block"); ) ) )

Produktion

 ArithmeticException => / med noll Detta är slutligen blocket

I exemplet ovan delar vi ett tal med 0 inuti tryblocket. Här genererar den här koden en ArithmeticException.

Undantaget fångas av catchblocket. Och sedan finallykörs blocket.

Obs! Det är bra att använda finallyblocket. Det beror på att det kan innehålla viktiga saneringskoder som,

  • kod som av misstag kan hoppas över genom att returnera, fortsätta eller bryta
  • stänga en fil eller anslutning

3. Java kasta och kasta nyckelord

Java- thrownyckelordet används för att uttryckligen kasta ett enda undantag.

När vi är throwett undantag flyttas flödet av programmet från tryblocket till catchblocket.

Exempel: Undantagshantering med Java-kast

 class Main ( public static void divideByZero() ( // throw an exception throw new ArithmeticException("Trying to divide by 0"); ) public static void main(String() args) ( divideByZero(); ) )

Produktion

 Undantag i tråden "main" java.lang.ArithmeticException: Försöker dela med 0 vid Main.divideByZero (Main.java:5) vid Main.main (Main.java:9)

I exemplet ovan kastar vi uttryckligen med ArithmeticExceptionhjälp av thrownyckelordet.

På samma sätt används throwsnyckelordet för att deklarera vilken typ av undantag som kan förekomma inom metoden. Den används i metoddeklarationen.

Exempel: Java kastar nyckelord

 import java.io.*; class Main ( // declareing the type of exception public static void findFile() throws IOException ( // code that may generate IOException File newFile = new File("test.txt"); FileInputStream stream = new FileInputStream(newFile); ) public static void main(String() args) ( try ( findFile(); ) catch (IOException e) ( System.out.println(e); ) ) )

Produktion

 java.io.FileNotFoundException: test.txt (Systemet kan inte hitta den angivna filen)

När filen test.txt inte existerar, kör vi FileInputStreamett FileNotFoundExceptionsom utökar IOExceptionklassen.

Den findFile()metod anger att en IOExceptionkan kastas. Den main()metodanrop denna metod och hanterar undantag om det kastas.

Om en metod inte hanterar undantag måste typen av undantag som kan förekomma inom den anges i throwsklausulen.

För att lära dig mer, besök Java kast och kast.

Intressanta artiklar...