Ausnahmebehandlung in Java [mit Beispielen]

Veröffentlicht: 2020-11-12

Ausnahmen sind das unerwünschte und unerwartete Ereignis eines Programms, das von einem Programmierer nie gewünscht wird, aber so oft damit umgehen muss. Die gute Seite ist, dass es mit der objektorientierten Sprache Java möglich ist, diese unerwünschten Ereignisse durch ein Konzept namens „Ausnahmebehandlung in Java “ abzumildern. Es repariert die Ausnahme nicht, bietet aber eine alternative Möglichkeit, damit umzugehen.

Es kann viele Gründe für das Auftreten einer Ausnahme geben, darunter die Eingabe falscher Daten, Hardwarefehler, Verbindungsfehler, Serverausfall usw. Daher ist und wird die Ausnahmebehandlung beim Erlernen von Java immer wichtig sein, da sie hilft, den Normalzustand sicherzustellen Ablauf eines Programms zum Zeitpunkt des Eintretens eines unerwarteten Ereignisses. Das Ignorieren von Ausnahmen kann zum Absturz der gesamten Software und zu Datenverlust führen.

Nachdem wir nun eine Vorstellung von Ausnahmen und der Ausnahmebehandlung bekommen haben, wollen wir uns im Detail damit befassen und verstehen, wie Java bei der Behandlung von Ausnahmen hilft.

Lesen Sie: Interviewfragen zur Ausnahmebehandlung

Inhaltsverzeichnis

Was ist Ausnahmebehandlung?

Ein Entwickler kann die Ausnahmen vorhersagen, die ein Codeabschnitt während der Laufzeit auslösen kann. Eines der wichtigsten Dinge, bei denen viele der Lernenden zweideutig sind, ist, dass alle Ausnahmen während der Laufzeit und nicht zum Zeitpunkt der Kompilierung auftreten. Java kann Ausnahmen nur während der Laufzeit behandeln. Es gibt bestimmte Schlüsselwörter, die in einem Java-Programm zum Erstellen eines Ausnahmebehandlungsblocks verwendet werden.

java.lang.Exception ist die übergeordnete Klasse aller Ausnahmeklassen. Die Exception -Klasse ist eine Unterklasse der eingebauten Throwable - Klasse, die wiederum eine Unterklasse der Object -Klasse ist. Abgesehen von Exception hat Throwable auch eine andere Klasse, nämlich Error, bei der es sich um einen anormalen Zustand während der Programmausführung handelt, der von Java-Programmen nicht behandelt werden kann, was der Hauptunterschied zwischen Error und Exceptions ist.

Wie in der obigen Abbildung gezeigt, gibt es in Java hauptsächlich zwei Kategorien von Ausnahmen. Im nächsten Abschnitt werfen wir einen detaillierten Blick auf die Arten von Ausnahmen in Java.

Java-Ausnahmen

Die Hauptursachen für Ausnahmen sind diejenigen, die durch den Programmierer oder durch physische Ressourcen verursacht werden, die aus bestimmten Gründen ausgefallen sind. Basierend auf diesen gibt es hauptsächlich zwei Kategorien von Ausnahmen in Java, wie unten im Detail beschrieben wird:

  1. Geprüfte Ausnahme
  2. Ungeprüfte Ausnahme

1. Geprüfte Ausnahme

Geprüfte Ausnahmen werden als "Ausnahmen zur Kompilierzeit" bezeichnet, da sie während der Kompilierung vom Compiler überprüft werden, um zu überwachen, ob die Ausnahme vom Programmierer behandelt wird. Das System zeigt dann einen Kompilierungsfehler an.

Einige Beispiele für diese Ausnahmen sind IOException , Lesen Sie: Java-Projektideen für Anfänger

2. Ungeprüfte Ausnahme

Ungeprüfte Ausnahmen werden „Laufzeitausnahmen“ genannt, da sie während der Laufzeit des Programms auftreten. Ungeprüfte Ausnahmen werden normalerweise während der Kompilierung ignoriert und nicht geprüft.

Beispiele für diese Ausnahmen können Fehler in einem Programm wie logische Fehler oder die Verwendung falscher APIs sein, die nicht der Kontrolle eines Programmierers unterliegen und die von einem Systemadministrator behoben werden müssen.

Geprüfte vs. ungeprüfte Ausnahme

Unterscheidungspunkte Geprüfte Ausnahme Ungeprüfte Ausnahme Bearbeitungszeit Geprüfte Ausnahmen werden zum Zeitpunkt der Kompilierung geprüft und behandelt. Ungeprüfte Ausnahmen werden zum Zeitpunkt der Kompilierung nicht geprüft.
Ausnahmeidentifikation Das Programm gibt einen Kompilierungsfehler aus, wenn eine Methode eine geprüfte Ausnahme auslöst. Das Programm wird problemlos kompiliert, da der Compiler die Ausnahme nicht überprüfen kann.
Nachlass Sie erben nicht die RuntimeException-Klasse. Sie sind die Unterklassen der RuntimeException-Klasse.
Rolle des Entwicklers Kann von den Entwicklern gehandhabt werden. Kann von den Entwicklern nicht bearbeitet werden.

Das Verständnis der Ausnahmen ist der erste Schritt, bevor Sie sie behandeln.

Wie hilft Java bei der Behandlung von Ausnahmen?

Nun, da wir wissen, dass es in Java zwei Arten von Ausnahmen gibt, nämlich aktivierte und nicht aktivierte. Wenn eine Methode eine geprüfte Ausnahme auslöst, sollte sie mit einem Try-Catch-Block behandelt werden, oder das Schlüsselwortthrows“ sollte deklariert werden, um Kompilierungsfehler in einem Programm zu vermeiden.

Beispiel einer geprüften Ausnahme:

Dies ist ein Programm zum Lesen einer Datei namens „Java“. Es gibt drei Stellen, an denen eine geprüfte Ausnahme ausgelöst wird:

  1. FileInputStream: Wird zum Angeben des Dateipfads und Namens throw FileNotFoundException verwendet .
  2. Die Methode read(): Das Lesen des Dateiinhalts löst IOException aus ;

iii. Die Methode close(): Das Schließen des Dateieingabestreams löst IOException aus .

java.io.* importieren ;

Klasse Beispiel {

public static void main( String args[])

{

FileInputStream fis = null ;

/*Der Konstruktor FileInputStream(Datei Dateiname)

* wirft eine geprüfte Ausnahme FileNotFoundException */

fis = new FileInputStream ( „B:/java.txt“ );

int k;

/* Methode read() von FileInputStream-Klassenwürfen

* eine geprüfte Ausnahme: IOException

*/

while (( k = fis.read() ) != – 1 )

{

System . aus . print (( char )k);

}

/*Die Methode close() schließt den Dateieingabestrom

* wirft IOException*/

fis.close();

}

}

Ausgabe des obigen Programms:

Ausnahme in Thread „main“ java.lang gefunden . Fehler : Ungelöste Kompilierungsprobleme:

Unbehandelte Ausnahme FileNotFoundException gefunden

Unbehandelte Ausnahme IOException gefunden

Unbehandelte Ausnahme IOException gefunden

Der Grund für diesen Kompilierungsfehler: Nichtdeklaration oder Behandlung der Ausnahmen.

Muss gelesen werden: Java GitHub-Projekte

Methoden der Ausnahmebehandlung

Es gibt zwei Möglichkeiten, wie die Ausnahmen wie folgt behandelt werden können:

Methode 1: Deklarieren des Ausnahmeschlüsselworts „throws“.

Im obigen Programm befinden sich alle drei geprüften Ausnahmen innerhalb der Methode main(). Eine Möglichkeit, den Kompilierungsfehler zu vermeiden, besteht also darin, die Ausnahme in der Methode mit dem Schlüsselwort „throws“ zu deklarieren. Da IOException eine übergeordnete Klasse von FileNotFoundException ist, wird dies auch behandelt.

Aktualisiertes Programm mit throws Schlüsselwort:

java.io.* importieren ;

Klasse Beispiel {

public static void main( String args[]) löst IOException aus

{

FileInputStream fis = null ;

fis = new FileInputStream ( „B:/java.txt“ );

int k;

while (( k = fis.read() ) != – 1 )

{

System . aus . print (( char )k);

}

fis.close();

}

}

Ausgabe:

Zeigen Sie den Inhalt der Datei auf dem Bildschirm an.

Methode 2: Behandeln Sie Ausnahmen mithilfe von Try-Catch-Blöcken.

Dies ist ein fortgeschrittenerer Ansatz für den obigen Ansatz und eine der besten Methoden zur Ausnahmebehandlung . Der geänderte Programmcode inklusive der Try-Catch-Blöcke sieht wie folgt aus:

java.io.* importieren ;

Klasse Beispiel {

public static void main( String args[])

{

FileInputStream fis = null ;

versuche {

fis = new FileInputStream ( „B:/java.txt“ );

} catch ( FileNotFoundException fnfe){

System . out .println( „Die Datei ist nicht „ +

„am angegebenen Pfad vorhanden“ );

}

int k;

versuche {

while (( k = fis.read() ) != – 1 )

{

System . aus . print (( char )k);

}

fis.close();

} catch ( IOException ioe){

System . out .println( „E/A-Fehler“ +ioe);

}

}

}

Ausgabe:

Dieser Code zeigt schließlich den Dateiinhalt an.

Beispiel einer ungeprüften Ausnahme

Die Unchecked-Ausnahmen werden zum Zeitpunkt der Kompilierung nicht überprüft. Das Programm gibt keinen Kompilierungsfehler aus, wenn es nicht deklariert oder behandelt wird, und läuft problemlos. Die Aufgabe des Entwicklers besteht darin, die Bedingungen vorherzusagen, die im Voraus auftreten können, um solche Ausnahmen zu verursachen, und sie zu handhaben. Alle ungeprüften Ausnahmen sind Unterklassen der RuntimeException -Klasse.

Klasse Beispiel {

public static void main( String args[])

{

int num1= 10 ;

int num2= 0 ;

/*Beliebige Zahl durch 0 dividieren

* Löst ArithmeticException aus

*/

int res=num1/num2;

System . aus .println (res);

}

}

Der Code wird mit diesem Code erfolgreich kompiliert, aber während der Laufzeit würde ArithmeticException ausgelöst , da die ungeprüften Ausnahmen zur Kompilierzeit nicht überprüft werden. Schauen wir uns ein weiteres Beispiel an.

Klasse Beispiel {

public static void main( String args[])

{

int arr[] = { 1 , 2 , 3 , 4 , 5 };

/* Das Array hat 5 Elemente, aber wir wollen

* den 8. Elementwert anzeigen. Es wird werfen

* ArrayIndexOutOfBoundsException

*/

System . out .println(arr[ 7 ]);

}

}

Dieser Code wird auch erfolgreich kompiliert, da ArrayIndexOutOfBoundsException eine ungeprüfte Ausnahme ist.

Hier sollte für die Behandlung ungeprüfter Ausnahmen dem Benutzer eine Ausnahmemeldung angezeigt werden, die er anzeigen möchte, die jedoch nicht im Array vorhanden ist.

Behandeln der obigen Codeausnahme mit try-catch-Block

Klasse Beispiel {

public static void main( String args[]) {

versuche {

int arr[] = { 1 , 2 , 3 , 4 , 5 };

System . out .println(arr[ 7 ]);

}

catch ( ArrayIndexOutOfBoundsException e){

System . out .println( „Der angegebene Index existiert nicht“ +

„in der Reihe“. );

}

}

}

Ausgabe:

Der angegebene Index ist im Array nicht vorhanden .

Hinweis: Innerhalb eines try-Blocks können mehrere catch-Blöcke vorhanden sein, um verschiedene Ausnahmen zu behandeln.

Methode 3 : Verwendung des Schlüsselworts „finally“.

Manchmal kommt es vor, dass ein Code ausgeführt werden muss, selbst wenn eine Ausnahme auftritt. Hier wird das letzte Schlüsselwort verwendet. Hier ist ein typischer Code mit dem Schlüsselwort „finally“.

public int getPlayerScore(String playerFile)

wirft FileNotFoundException {

Scannerinhalt = null;

Versuchen {

Inhalt = neuer Scanner ( neue Datei (PlayerFile));

return Integer.parseInt(contents.nextLine());

} endlich {

if (Inhalt != null ) {

Inhalt.Schließen();

}

}

}

Hier gibt der letzte Block den Code an, den Java ausführen soll, wenn wir versuchen, die Datei zu lesen.

Selbst wenn eine FileNotFoundException ausgelöst wird, ruft Java den Inhalt von finally auf .

Wir können die Ausnahme behandeln , indem wir den Code wie folgt ändern:

public int PlayerScore(String playerRuns) {

Scanner-Inhalte;

Versuchen {

Inhalt = neuer Scanner (neue Datei (PlayerRuns));

return Integer.parseInt(contents.nextLine());

} catch (FileNotFoundException noFile) {

logger.warn("Datei nicht gefunden.");

0 zurückgeben;

} endlich {

Versuchen {

if (Inhalt != null) {

Inhalt.Schließen();

}

} catch (IOException ioexc) {

logger.error("Der Reader konnte nicht geschlossen werden.", ioexc);

}

}

}

Fazit

Mit diesem Artikel haben wir versucht, die Grundlagen von Fehlern und Ausnahmen und der Ausnahmebehandlung in Java zu vermitteln . Wir hoffen, dass dieser Leitfaden Ihnen eine gute Vorstellung von dieser einzigartigen Funktion gibt, die Java bietet, und dass Sie jetzt die Ausnahmen besser handhaben und sich besser von ihnen erholen können. Fazit

Java bietet Möglichkeiten zur Behandlung von Ausnahmen, von spezifischen bis hin zu generischen. Ausnahmen, die nicht ohne Weiteres vorhergesagt werden können, werden als unbehandelte Ausnahmen bezeichnet. Das Erfassen aller Ausnahmen bietet dem Entwicklungsteam Einblick in die Qualität des Codes und die Ursachen der Fehler, die schnell behoben werden können.

Wenn Sie mehr über Java und Full-Stack-Entwicklung erfahren möchten, sehen Sie sich das PG-Diplom in Full-Stack-Softwareentwicklung von upGrad & IIIT-B an. Es ist sorgfältig für Fachleute kuratiert und gewährleistet eine 360-Grad-Karriereunterstützung und umfasst Live-Projekte, an denen gearbeitet werden kann. Am Ende des Kurses sind Sie in der Lage, Anwendungen wie Swiggy, IMDB usw. zu entwerfen und zu erstellen.

Klingt das nicht spannend!-

Werden Sie Full-Stack-Entwickler

UPGRAD UND IIIT-BANGALORES PG-DIPLOM IN SOFTWAREENTWICKLUNG
Erfahren Sie mehr