Afhandeling van uitzonderingen Java
Wat is uitzondering in Java?
Uitzondering binnen Java is een gebeurtenis die de uitvoering van programma-instructies onderbreekt en de normale stroom van programma-uitvoering verstoort. Het is een object dat informatie over een foutgebeurtenis verpakt die binnen een methode heeft plaatsgevonden en wordt doorgegeven aan het runtimesysteem. In Javaworden uitzonderingen voornamelijk gebruikt om verschillende soorten foutcondities aan te geven.
Er zijn twee soorten fouten:
- Compileertijdfouten
- Runtime-fouten
Compileerfouten kunnen opnieuw in twee typen worden ingedeeld:
- Syntaxisfouten
- Semantische fouten
Syntaxisfouten Voorbeeld:
In plaats van te verklaren int a; je hebt het ten onrechte aangegeven als in a; waarvoor de compiler een fout zal genereren.
Voorbeeld: U heeft een variabele gedeclareerd int a; en na enkele regels code declareer je opnieuw een geheel getal als int a;Al deze fouten worden gemarkeerd wanneer u de code compileert.
Voorbeeld van runtimefouten
Een Runtime-fout wordt een Uitzonderingen fout. Het is een gebeurtenis die de normale stroom van de uitvoering van het programma onderbreekt. Voorbeelden van uitzonderingen zijn rekenkundige uitzondering, Nullpointer-uitzondering, Delen door nul-uitzondering, enz. Uitzonderingen in Java zijn iets waar de ontwikkelaar geen controle over heeft.
Klik hier als de video niet toegankelijk is
Waarom hebben we uitzonderingen nodig?
Stel, je hebt een programma geschreven om toegang te krijgen tot de server. Alles werkte prima tijdens de ontwikkeling.ping de code.
Tijdens de daadwerkelijke productierun is de server offline. Wanneer uw programma probeert er toegang toe te krijgen, wordt er een uitzondering gegenereerd.
Hoe om te gaan met uitzonderingen
Tot nu toe hebben we gezien dat uitzonderingen buiten de controle van de ontwikkelaar vallen. Maar het is geen oplossing om het falen van uw code te wijten aan milieukwesties. Je hebt een Robuuste Programmering nodig, die voor uitzonderlijke situaties zorgt. Een dergelijke code staat bekend als Uitzonderingsbehandelaar.
In ons voorbeeld zou een goede afhandeling van uitzonderingen bestaan โโuit: wanneer de server niet beschikbaar is, verbinding maken met de back-upserver.
Om dit te implementeren, voert u uw code in om verbinding te maken met de server (met behulp van traditionele if- en else-voorwaarden). U controleert of de server down is. Als dat zo is, schrijft u de code om verbinding te maken met de back-upserver. Een dergelijke organisatie van code, met behulp van een "if"- en "else"-lus, is niet effectief wanneer uw code meerdere Java-uitzonderingen ermee omgaan.
class connect{
if(Server Up){
// code to connect to server
}
else{
// code to connect to BACKUP server
}
}
Probeer Catch Block
Java biedt een ingebouwde uitzonderlijke handling.
- De normale code gaat in a TRY blok.
- De code voor het afhandelen van uitzonderingen wordt in het bestand CATCH blok
In ons voorbeeld bevat het TRY-blok de code om verbinding te maken met de server. Het CATCH-blok bevat de code om verbinding te maken met de back-upserver. Als de server actief is, wordt de code in het CATCH-blok genegeerd. Als de server down is, wordt er een uitzondering gegenereerd en wordt de code in het catch-blok uitgevoerd.
Dit is dus hoe de uitzondering wordt afgehandeld Java.
Syntaxis voor het gebruik van try & catch
try{
statement(s)
}
catch (exceptiontype name){
statement(s)
}
Voorbeeld
Stap 1) Kopieer de volgende code in een editor
class JavaException {
public static void main(String args[]){
int d = 0;
int n = 20;
int fraction = n/d;
System.out.println("End Of Main");
}
}
Stap 2) Sla het bestand op en compileer de code. Voer het programma uit met behulp van command, java Javauitzondering
Stap 3) Een rekenkundige uitzondering โ delen door nul wordt weergegeven zoals hieronder voor regel # 5 en regel # 6 wordt nooit uitgevoerd
Stap 4) Laten we nu eens kijken hoe try-and-catch ons zal helpen om met deze uitzondering om te gaan. We zullen de uitzondering die de coderegel veroorzaakt, in a plaatsen proberen blok, gevolgd door een vangst blok. Kopieer de volgende code in de editor.
class JavaException {
public static void main(String args[]) {
int d = 0;
int n = 20;
try {
int fraction = n / d;
System.out.println("This line will not be Executed");
} catch (ArithmeticException e) {
System.out.println("In the catch Block due to Exception = " + e);
}
System.out.println("End Of Main");
}
}
Stap 5) Sla de code op, compileer en voer deze uit. U krijgt de volgende uitvoer
Zoals u ziet, wordt de uitzondering afgehandeld en wordt de laatste regel code ook uitgevoerd. Houd er ook rekening mee dat regel #7 niet wordt uitgevoerd omdat zodra er een uitzondering wordt gemaakt, springt de controlestroom naar het catch-blok.
Let op: Het AritmeticException-object โeโ bevat informatie over de opgetreden uitzondering, wat nuttig kan zijn bij het ondernemen van herstelacties.
Java Uitzonderingsklasse Hiรซrarchie
Nadat รฉรฉn catch-instructie is uitgevoerd, worden de andere omzeild en wordt de uitvoering voortgezet na het try/catch-blok. De geneste catch-blokken volgen de uitzonderingshiรซrarchie.
- Alle uitzonderingsklassen in Java breid de klasse 'Werpbaar' uit. Throwable heeft twee subklassen, Error en Exception
- De klasse Error definieert de uitzondering of de problemen die naar verwachting onder normale omstandigheden niet door ons programma zullen optreden, bijvoorbeeld geheugenfout, hardwarefout, JVM-fout, enz.
- De klasse Exception vertegenwoordigt de uitzonderingen die door ons programma kunnen worden afgehandeld, en ons programma kan van deze uitzondering worden hersteld met behulp van het try-and-catch-blok
- Een runtime-uitzondering is een subklasse van de uitzonderingsklasse. Uitzonderingen van dit type vertegenwoordigen uitzonderingen die optreden tijdens de uitvoering en die niet kunnen worden opgelost. tracDit gebeurt tijdens het compileren. Een uitstekend voorbeeld hiervan is een deling door nul-uitzondering, een null-pointer-uitzondering, enzovoort.
- IO-uitzondering wordt gegenereerd tijdens invoer- en uitvoerbewerkingen
- Onderbroken uitzonderingen in Java, wordt gegenereerd tijdens meerdere threads.
Voorbeeld: Het nesten van try-and-catch-blokken begrijpen
Stap 1) Kopieer de volgende code in een editor.
class JavaException {
public static void main(String args[]) {
try {
int d = 1;
int n = 20;
int fraction = n / d;
int g[] = {
1
};
g[20] = 100;
}
/*catch(Exception e){
System.out.println("In the catch block due to Exception = "+e);
}*/
catch (ArithmeticException e) {
System.out.println("In the catch block due to Exception = " + e);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("In the catch block due to Exception = " + e);
}
System.out.println("End Of Main");
}
}
Stap 2) Sla het bestand op en compileer de code. Voer het programma uit met behulp van de opdracht, Java Javauitzondering.
Stap 3) Er wordt een ArrayIndexOutOfBoundsException gegenereerd. Verander de waarde van int d in 0. Bewaar, compileer en voer de code uit.
Stap 4) Er moet een ArithmeticException worden gegenereerd.
Stap 5) Verwijder commentaar op regel #10 tot en met regel #12. Bewaar, compileer en voer de code uit.
Stap 6) Compilatiefout? Dit komt omdat Exception de basisklasse is van ArithmeticException Exception. Elke uitzondering die door ArithmeticException wordt gegenereerd, kan ook door de klasse Exception worden afgehandeld. Het catch-blok van ArithmeticException krijgt dus nooit de kans om te worden uitgevoerd, waardoor het overbodig wordt. Vandaar de compilatiefout.
Java Eindelijk Blok
Het laatste blok is uitgevoerd ongeacht of er een uitzondering wordt gemaakt in het try-blok. Het is optioneel te gebruiken met een try-blok.
try {
statement(s)
} catch (ExceptiontType name) {
statement(s)
} finally {
statement(s)
}
Als er een uitzondering optreedt in het try-blok, wordt het blok uiteindelijk uitgevoerd nadat het catch-blok is uitgevoerd.
Voorbeeld
Stap 1) Kopieer de volgende code in een editor.
class JavaException {
public static void main(String args[]){
try{
int d = 0;
int n =20;
int fraction = n/d;
}
catch(ArithmeticException e){
System.out.println("In the catch block due to Exception = "+e);
}
finally{
System.out.println("Inside the finally block");
}
}
}
Stap 2) Opslaan, compileren en uitvoeren Code.
Stap 3) Verwachte resultaten. Ten slotte wordt het blok uitgevoerd, ook al is er een uitzondering opgetreden.
Stap 4) Verander de waarde van variabele d = 1. Bewaar, compileer en voer de code uit en bekijk de uitvoer. Onderaan het formulier
Samenvatting
- An Uitzondering is een runtimefout die de normale stroom van programma-uitvoering onderbreekt. Verstoring tijdens de uitvoering van het programma wordt fout of uitzondering genoemd.
- Fouten worden in twee categorieรซn ingedeeld
- Compileertijdfouten โ Syntaxisfouten, semantische fouten
- Runtime-fouten - Uitzondering
- A robuust programma moet alle uitzonderingen afhandelen en ga verder met de normale stroom van programma-uitvoering. Java biedt een ingebouwde uitzonderlijke verwerkingsmethode
- Exception Handler is een set code die behandelt een uitzondering. Uitzonderingen kunnen worden afgehandeld in Java met behulp van try & catch.
- Probeer blok: Normale code gaat op dit blok.
- Vangstblok: Als er een fout zit in de normale code, wordt deze in dit blok geplaatst







