Op Java: uitzondering is een ongewenste of onverwachte gebeurtenis die optreedt tijdens de uitvoering van een programma, dat wil zeggen tijdens runtime, en die de normale stroom van de programma-instructies verstoort.
In Java zijn er twee soorten uitzonderingen:
- Uitzonderingen gecontroleerd
- Niet-aangevinkte uitzonderingen

Uitzonderingen in Java gecontroleerd
Deze zijn de uitzonderingen die tijdens het compileren worden gecontroleerd. Als code binnen een methode een gecontroleerde uitzondering genereert, moet de methode de uitzondering afhandelen of de uitzondering specificeren met behulp van de gooit trefwoord . Bij gecontroleerde uitzonderingen zijn er twee soorten: volledig gecontroleerde en gedeeltelijk gecontroleerde uitzonderingen. Een volledig gecontroleerde uitzondering is een gecontroleerde uitzondering waarbij alle onderliggende klassen ook worden gecontroleerd, zoals IOException en InterruptedException. Een gedeeltelijk gecontroleerde uitzondering is een gecontroleerde uitzondering waarbij sommige onderliggende klassen niet zijn aangevinkt, zoals een uitzondering.
Beschouw bijvoorbeeld het volgende Java-programma dat het bestand opent op locatie C: esta.txt en de eerste drie regels ervan afdrukt. Het programma compileert niet, omdat de functie main() FileReader() gebruikt, en FileReader() een gecontroleerde uitzondering genereert FileNotFoundException . Het gebruikt ook de methoden readLine() en close(), en deze methoden genereren ook gecontroleerde uitzonderingen IOUitzondering
Voorbeeld:
Java
// Java Program to Illustrate Checked Exceptions> // Where FileNotFoundException occurred> // Importing I/O classes> import> java.io.*;> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Reading file from path in local directory> >FileReader file =>new> FileReader(>'C: esta.txt'>);> >// Creating object as one of ways of taking input> >BufferedReader fileInput =>new> BufferedReader(file);> >// Printing first 3 lines of file 'C: esta.txt'> >for> (>int> counter =>0>; counter <>3>; counter++)> >System.out.println(fileInput.readLine());> >// Closing file connections> >// using close() method> >fileInput.close();> >}> }> |
>
>
Uitgang:

Om het bovenstaande programma te repareren, moeten we ofwel een lijst met uitzonderingen specificeren met behulp van worpen, of we moeten een try-catch-blok gebruiken. We hebben worpen gebruikt in het onderstaande programma. Sinds FileNotFoundException is een subklasse van IOUitzondering , we kunnen het gewoon specificeren IOUitzondering in de throws-lijst en maak het bovenstaande programma foutloos compiler.
Voorbeeld:
Java
// Java Program to Illustrate Checked Exceptions> // Where FileNotFoundException does not occur> // Importing I/O classes> import> java.io.*;> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >throws> IOException> >{> >// Creating a file and reading from local repository> >FileReader file =>new> FileReader(>'C: esta.txt'>);> >// Reading content inside a file> >BufferedReader fileInput =>new> BufferedReader(file);> >// Printing first 3 lines of file 'C: esta.txt'> >for> (>int> counter =>0>; counter <>3>; counter++)> >System.out.println(fileInput.readLine());> >// Closing all file connections> >// using close() method> >// Good practice to avoid any memory leakage> >fileInput.close();> >}> }> |
sorteer een arraylist
>
>
Uitgang:
First three lines of file 'C: esta.txt'>
Niet-aangevinkte uitzonderingen in Java
Dit zijn de uitzonderingen die tijdens het compileren niet worden gecontroleerd. In C++ zijn alle uitzonderingen uitgeschakeld, zodat de compiler niet dwingt om de uitzondering af te handelen of te specificeren. Het is aan de programmeurs om beschaafd te zijn en de uitzonderingen te specificeren of te ondervangen. In Java gelden uitzonderingen onder Fout En RuntimeException klassen zijn ongecontroleerde uitzonderingen, al het andere onder throwable is aangevinkt.
Beschouw het volgende Java-programma. Het compileert prima, maar het gooit Rekenkundige uitzondering wanneer uitgevoerd. De compiler staat het toe om te compileren omdat Rekenkundige uitzondering is een ongecontroleerde uitzondering.
Voorbeeld:
Java
// Java Program to Illustrate Un-checked Exceptions> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// Here we are dividing by 0> >// which will not be caught at compile time> >// as there is no mistake but caught at runtime> >// because it is mathematically incorrect> >int> x =>0>;> >int> y =>10>;> >int> z = y / x;> >}> }> |
>
>
Uitvoer
Exception in thread 'main' java.lang.ArithmeticException: / by zero at Main.main(Main.java:5) Java Result: 1>
Kortom, niet-gecontroleerde uitzonderingen zijn runtime-uitzonderingen die niet hoeven te worden opgevangen of gedeclareerd in een throws-clausule. Deze uitzonderingen worden meestal veroorzaakt door programmeerfouten, zoals een poging om toegang te krijgen tot een index die buiten het bereik ligt in een array of een poging om te delen door nul.
Niet-gecontroleerde uitzonderingen omvatten alle subklassen van de RuntimeException-klasse, evenals de Error-klasse en zijn subklassen.
Hier zijn enkele voorbeelden van niet-gecontroleerde uitzonderingen in Java:
1. ArrayIndexOutOfBoundsException: Deze uitzondering treedt op wanneer u probeert toegang te krijgen tot een array-index die zich buiten het bereik bevindt.
2. NullPointerException: Deze uitzondering wordt gegenereerd wanneer u probeert toegang te krijgen tot een null-objectreferentie.
3. Rekenkundige uitzondering: Deze uitzondering treedt op wanneer u probeert door nul te delen of een ongeldige rekenkundige bewerking uitvoert.