Die 30 wichtigsten Fragen und Antworten zum Umgang mit Ausnahmen in Vorstellungsgesprächen [Für Neueinsteiger und Erfahrene]

Veröffentlicht: 2020-09-29

Die Ausnahmebehandlung ist ein Konzept, das in Algorithmen implementiert ist, um mögliche Laufzeitfehler zu behandeln, die den normalen Ablauf eines Programms stören können. Einige der Fehler, die mit diesem Konzept behandelt werden können, sind:

  • ClassNotFoundException
  • IOException
  • SQLException
  • RemoteException
  • RuntimeException:
    • Arithmetische Ausnahme
    • NullPointerException
    • NumberFormatException
    • IndexOutOfBoundsException
      • ArrayIndexOutOfBoundsException
      • StringIndexOutOfBoundsException

Der Vorteil dieser Implementierung besteht darin, einen Absturz des Programms zu verhindern, wenn während der Ausführung des Programms eine Ausnahme auftritt. Ohne Ausnahmebehandlung gibt das Programm einen Fehler aus, wenn es auf eine Ausnahme trifft, und der Rest des Programms wird nicht ausgeführt. Das Implementieren dieses Konzepts ergibt jedoch eine Problemumgehung, bei der der Rest des Programms ausgeführt wird, wenn sie in Bezug auf die aufgetretene Ausnahme unabhängig sind. Weitere Informationen finden Sie in unseren Data Science-Kursen.

Lesen Sie: Muss 30 Fragen und Antworten zu Selen-Interviews lesen: Ultimativer Leitfaden

Fragen und Antworten zum Umgang mit Ausnahmen im Vorstellungsgespräch

1. Was meinen Sie mit einer Ausnahme?

Dies ist ein anormaler Zustand, der manchmal auftritt, wenn ein Programm ausgeführt wird. Es stört den normalen Ablauf des Programms. Diese Ausnahme muss behandelt werden; andernfalls kann das Programm abrupt beendet werden.

2. Erklären Sie, wie Ausnahmen in Java behandelt werden können. Was ist der Ausnahmebehandlungsmechanismus hinter dem Prozess?

Der Ausnahmebehandlungsmechanismus besteht aus drei Teilen. Diese nennt man:

  • Try-Block: Der Abschnitt des Codes, dessen Ausführung zuerst versucht und auf eventuell auftretende Ausnahmen überwacht wird.
  • Catch-Block: Wenn eine Ausnahme vom 'try'-Block ausgelöst wird, wird sie von diesem Codeabschnitt abgefangen.
  • Endgültiger Block: Code in diesem Abschnitt wird immer ausgeführt, unabhängig von Ausnahmen, die im 'try'-Block abgefangen werden, falls vorhanden. Auch wenn keine Ausnahme vorliegt, wird der Code unter diesem Block ausgeführt.

3. Ist es möglich, andere Anweisungen zwischen 'try'-, 'catch'- und 'finally'-Blöcken zu halten?

Es wird nicht empfohlen, zwischen den Abschnitten irgendwelche Aussagen einzufügen 'try'-, 'catch'- und 'finally'-Blöcke, da sie eine ganze Einheit des Ausnahmebehandlungsmechanismus bilden.

Versuchen

{

//Code, der auf Ausnahmen überwacht wird.

}

//Du kannst hier keine Aussagen machen

fangen (Ausnahme Bsp.)

{

//Fang die vom try-Block ausgelösten Ausnahmen ab, falls vorhanden.

}

//Du kannst hier keine Aussagen machen

endlich

{

//Dieser Block wird unabhängig von Ausnahmen immer ausgeführt.

}

4. Wird es möglich sein, nur einen „try“-Block ohne die „catch“- und „finally“-Blöcke einzufügen?

Dies würde zu einem Kompilierungsfehler führen. Es ist notwendig, dass dem 'try'-Block entweder ein 'catch'-Block oder ein 'finally'-Block folgt, wenn nicht beide. Es wird entweder einer der „catch“- oder „finally“-Blöcke benötigt, damit der Ablauf der Ausnahmebehandlung ungestört ist.

5. Wird es möglich sein, die Anweisungen nach dem 'finally'-Block beizubehalten, wenn die Kontrolle aus dem finally-Block selbst zurückkehrt?

Dies führt zu einem nicht erreichbaren Catch-Block-Fehler. Dies liegt daran, dass die Steuerung vom „finally“-Block selbst zurückkehrt. Der Compiler kann den Code nach der Zeile mit der Ausnahme nicht ausführen. Aus diesem Grund zeigt die Ausführung einen nicht erreichbaren Codefehler.

Träumen Sie davon, im Ausland zu studieren? Hier ist das richtige Programm für Sie

6. Erklären Sie einen nicht erreichbaren Catch-Block-Fehler.

Im Falle mehrerer Catch-Blöcke ist die Reihenfolge, in der Catch-Blöcke platziert werden, von den spezifischsten zu den allgemeinsten. Das heißt, die Unterklassen einer Ausnahme sollten zuerst kommen, und dann folgen die Oberklassen. Falls die Oberklassen zuerst beibehalten werden, gefolgt von den Unterklassen danach, zeigt der Compiler einen Unreachable-Catch-Block-Fehler an.

öffentliche Klasse ExceptionHandling

{

public static void main(String[] args)

{

Versuchen

{

int i = Integer.parseInt("test");

//Diese Anweisung löst eine NumberFormatException aus, //weil die angegebene Eingabe eine Zeichenfolge ist, während das //angegebene Format eine Ganzzahl ist.

}

fangen (Ausnahme Bsp.)

{

System.out.println("Dieser Block behandelt alle Ausnahmetypen");

//Alle Arten von Ausnahmen können in diesem //Block behandelt werden, da es sich um eine Oberklasse von Ausnahmen handelt.

}

catch(NumberFormatException Bsp.)

{

//Dies wird einen Kompilierzeitfehler geben

//Dieser Block wird als unerreichbar

//Ausnahme würde bereits durch den obigen //Catch-Block abgefangen

}

}

}

7. Betrachten Sie drei Anweisungen in einem 'try'-Block: Anweisung1, Anweisung2 und Anweisung3. Darauf folgt ein „catch“-Block, um die Ausnahmen abzufangen, die während der Ausführung des „try“-Blocks aufgetreten sind. Angenommen, die Ausnahme wird bei Anweisung2 ausgelöst. Glauben Sie, dass die Anweisung 3 ausgeführt wird?

Anweisung3 wird nicht ausgeführt. Wenn der „try“-Block zu irgendeinem Zeitpunkt eine Ausnahme auslöst, wird der verbleibende Code nach der Ausnahme nicht ausgeführt. Stattdessen kommt die Flusskontrolle direkt zum 'Fang'-Block.

8. Fehler und Ausnahme in Java unterscheiden.

Der Hauptunterschied zwischen Fehler und Ausnahme besteht darin, dass der Fehler zwar durch die Umgebung verursacht wird, in der die JVM (Java Virtual Machine) ausgeführt wird, Ausnahmen jedoch durch das Programm selbst verursacht werden. Beispielsweise ist OutOfMemory ein Fehler, der auftritt, wenn die JVM ihren Arbeitsspeicher erschöpft.

NullPointerException ist jedoch eine Ausnahme, die auftritt, wenn das Programm versucht, auf ein Nullobjekt zuzugreifen. Eine Wiederherstellung nach einem Fehler ist nicht möglich. Daher besteht die einzige Lösung für einen Fehler darin, die Ausführung zu beenden. Es ist jedoch möglich, Ausnahmen zu umgehen, indem Sie Try-and-Catch-Blöcke verwenden oder Ausnahmen an die aufrufende Funktion zurückgeben.

Muss gelesen werden: Fragen und Antworten zu Java-Interviews

9. Welche Arten von Ausnahmen gibt es? Erklären Sie sie.

Es gibt zwei Arten von Ausnahmen:

Geprüfte Ausnahmen

Der Typ der Ausnahmen, die bekannt sind und vom Compiler erkannt werden. Diese Ausnahmen können nur zur Kompilierzeit überprüft werden. Daher werden sie auch als Kompilierzeitausnahmen bezeichnet. Diese können entweder durch Try- und Catch-Blöcke oder durch Verwendung einer Throw-Klausel gehandhabt werden. Wenn diese Ausnahmen nicht angemessen behandelt werden, führen sie zu Kompilierzeitfehlern. Beispiele umfassen die Unterklassen von java.lang.Exception mit Ausnahme der RunTimeException.

Ungeprüfte Ausnahmen

Der Typ von Ausnahmen, die vom Compiler nicht erkannt werden. Sie treten nur zur Laufzeit auf. Daher werden sie auch Laufzeitausnahmen genannt. Sie werden zur Kompilierzeit nicht überprüft. Daher können sie auch nach erfolgreicher Kompilierung bei unsachgemäßer Behandlung zum vorzeitigen Programmabbruch führen. Beispiele sind die Unterklassen von java.lang.RunTimeException und java.lang.Error.

10. Was ist die Hierarchie der Ausnahmen in Java?

Das java.lang.Throwable ist eine Oberklasse aller Fehler und Ausnahmen in Java. Diese Klasse erweitert die Klasse java.lang.Object. Das Argument des catch-Blocks sollte nur sein Typ oder sein Unterklassentyp sein. Die Throwable-Klasse umfasst zwei Unterklassen:

  1. java.lang.Error : Dies ist eine Superklasse für alle Fehlertypen in Java. Häufige Fehler, die darunter fallen, sind –
    1. java.lang.VirtualMachineError: Darunter –
      1. StackOverFlowError
      2. Außerhalb des Speicherfehler
    2. java.lang.AssertionError
    3. java.lang.LinkageError: Darunter –
      1. NoClassDefFoundError
      2. Inkompatibler Klassenänderungsfehler
  2. java.lang.Exception: Dies ist eine Oberklasse aller Ausnahmetypen in Java. Übliche Ausnahmen hiervon sind –
    1. RunTimeException
      1. Arithmetische Ausnahme
      2. NumberFormatException
      3. NullPointerException
      4. ArrayIndexOutOfBoundsException
      5. ClassCastException
    2. java.lang.InterruptedException
    3. java.lang.IOException
    4. java.lang.SQLException
    5. java.lang.ParseException

11. Was sind Laufzeitausnahmen in Java? Nennen Sie einige Beispiele.

Die zur Laufzeit auftretenden Ausnahmen werden als Laufzeitausnahmen bezeichnet. Der Compiler kann diese Ausnahmen wie ungeprüfte Ausnahmen nicht erkennen. Es enthält alle Unterklassen von java.lang.RunTimeException und java.lang.Error. Beispiele sind NumberFormatException, NullPointerException, ClassCastException, ArrayIndexOutOfBoundException, StackOverflowError usw.

12. Definieren Sie OutOfMemoryError in Java.

Es ist die Unterklasse von java.lang.Error, die auftritt, wenn der JVM der Arbeitsspeicher ausgeht.

13. Unterscheide zwischen NoClassDefFoundError und ClassNotFoundException in Java.

Sowohl NoClassDefFoundError als auch ClassNotFoundException treten auf, wenn eine bestimmte Klasse zur Laufzeit nicht gefunden wird. Sie treten jedoch unter verschiedenen Szenarien auf. NoClassDefFoundError tritt auf, wenn ein Fehler auftritt, weil eine bestimmte Klasse zur Kompilierzeit vorhanden war, aber zur Laufzeit fehlte. ClassNotFoundException tritt auf, wenn eine Ausnahme für eine Anwendung auftritt, die versucht, eine Klasse zur Laufzeit zu laden, die im Klassenpfad nicht aktualisiert wird.

14. Wird der „finally“-Block ausgeführt, wenn einer der „try“- oder „catch“-Blöcke die Steuerung zurückgibt?

Der 'finally'-Block wird immer ausgeführt, unabhängig davon, ob try- oder catch-Blöcke die Kontrolle zurückgeben oder nicht.

15. Ist es möglich, eine Ausnahme manuell auszulösen? Wenn ja, erklären Sie wie.

Es ist möglich, eine Ausnahme manuell auszulösen. Dies geschieht mit dem Schlüsselwort „throw“. Die Syntax zum manuellen Auslösen einer Ausnahme lautet

throw InstanceOfThrowableType;

Hier ist ein Beispiel für die Verwendung des Schlüsselworts „throw“, um eine Ausnahme manuell auszulösen.

Versuchen

{

NumberFormatException ex = new NumberFormatException(); //Hier erstellen wir explizit ein Objekt für NumberFormatException

ex werfen; //Explizites Auslösen des NumberFormatException-Objekts mit dem Throw-Schlüsselwort

}

catch(NumberFormatException Bsp.)

{

System.out.println(“In diesem Block kann das explizit ausgelöste NumberFormatException-Objekt abgefangen werden.”);

}

Lesen Sie: Die 35 wichtigsten Fragen und Antworten zu Vorstellungsgesprächen im Frühjahr: Ultimativer Leitfaden

16. Was meinen Sie mit erneutem Auslösen einer Ausnahme in Java?

Die Ausnahmen, die im 'try'-Block ausgelöst werden, werden im 'catch'-Block behandelt. Wenn der 'catch'-Block diese Ausnahme nicht verarbeiten kann, ist es möglich, dass er dieselbe Ausnahme mit dem Schlüsselwort 'throw' erneut auslöst. Dieser Mechanismus wird als erneutes Auslösen einer Ausnahme bezeichnet. Die Umsetzung ist wie folgt:

Versuchen

{

Zeichenfolge s = null;

System.out.println(s.length()); //Diese Anweisung löst eine NullPointerException aus

}

catch(NullPointerException ex)

{

System.out.println("Hier wird die NullPointerException abgefangen");

ex werfen; //Erneutes Auslösen der NullPointerException

}

17. Warum verwenden Sie das Schlüsselwort „throws“ in Java?

Wenn es möglich ist, dass eine Methode eine Ausnahme auslöst, wenn sie nicht behandelt werden konnte, sollte sie diese Ausnahme mit dem Schlüsselwort „throws“ angeben. Es wird für die aufrufenden Funktionen dieser Methode bei der Behandlung dieser Ausnahme hilfreich sein. Die Syntax für die Verwendung des Schlüsselworts „throws“ lautet:

return_type method_name(parameter_list) löst exception_list aus

{

//Code

}

Hier ist exception_list die Liste der Ausnahmen, die von der Methode geworfen werden können. Diese Ausnahmen sollten durch Kommas getrennt werden. Ein Beispiel für den Code:

öffentliche Klasse ExceptionHandling

{

public static void main(String[] args)

{

Versuchen

{

methodWithThrows();

}

catch(NullPointerException ex)

{

System.out.println("NullPointerException, das von der methodWithThrows()-Methode ausgelöst wird, wird hier abgefangen");

}

}

static void methodWithThrows() löst NullPointerException aus

{

Zeichenfolge s = null;

System.out.println(s.length()); //Diese Anweisung löst NullPointerException aus

}

}

18. Es wird oft empfohlen, Aufräumarbeiten wie das Schließen der DB-Ressourcen innerhalb des „finally“-Blocks zu belassen. Warum ist es notwendig?

Der 'finally'-Block wird immer ausgeführt, unabhängig davon, ob Ausnahmen im 'try'-Block ausgelöst werden oder ob die ausgelösten Exceptions im 'catch'-Block abgefangen werden oder nicht. Das Aufrechterhalten der Bereinigungsoperationen im 'finally'-Block stellt den Betrieb dieser Operationen in jedem Fall sicher und wird nicht durch Ausnahmen beeinträchtigt, die auftreten können oder nicht.

19. Wie würden Sie in Java zwischen final, final und finalize unterscheiden?

Erstens ist „final“ ein Schlüsselwort, das verwendet werden kann, um eine Variable oder eine Methode oder eine Klasse als unveränderlich zu machen. Einfach ausgedrückt: Wenn eine Variable als final deklariert ist, kann ihr Wert nach der Initialisierung nicht mehr geändert werden. Wenn eine Methode als final deklariert ist, kann sie in der Unterklasse nicht überschrieben oder geändert werden. Wird eine Klasse als final deklariert, kann sie nicht in weitere Klassen erweitert werden.

Zweitens ist „finally“ ein Block, der zusammen mit den Blöcken „try“ und „catch“ bei der Ausnahmebehandlung verwendet wird. Dieser Block wird immer ausgeführt, unabhängig von einer ausgelösten Ausnahme oder wenn die ausgelöste Ausnahme behandelt wird. Normalerweise wird dieser Block verwendet, um Bereinigungsvorgänge durchzuführen, um die Ressourcen wie Datenbankverbindung, E/A-Ressourcen usw. zu schließen.

Drittens ist die Methode finalize() eine geschützte Methode. Es gehört zur Klasse java.lang.Object. Jede in Java erstellte Klasse erbt diese Methode. Der Garbage Collector-Thread ruft diese Methode auf, bevor ein Objekt aus dem Speicher entfernt wird. Bevor ein Objekt aus dem Speicher entfernt wird, wird diese Methode verwendet, um einige der Aufräumarbeiten durchzuführen.

protected void finalize() wirft Throwable

{

//Operationen aufräumen

}

20. Was sind benutzerdefinierte Ausnahmen in Java?

Ausnahmeklassen können in Java gemäß den Anforderungen des Programmablaufs geworfen werden. Diese Ausnahmen werden benutzerdefinierte Ausnahmen genannt. Sie werden auch als benutzerdefinierte Ausnahmen bezeichnet. Diese Ausnahmen müssen eine der Klassen in der Hierarchie der Ausnahmen erweitern.

21. Wie würden Sie eine ClassCastException in Java erklären?

Wenn die JVM ein Objekt eines Typs nicht in einen anderen Typ umwandeln kann, wird diese Ausnahme ausgelöst. Es ist eine RunTimeException.

22. Unterscheide zwischen throw, throws und throwable in Java.

Zunächst wird das Schlüsselwort „throw“ verwendet, um eine Ausnahme manuell in Java auszulösen. Mit diesem Schlüsselwort ist es möglich, eine Ausnahme von jeder Methode oder jedem Block auszulösen. Es ist jedoch wichtig, dass die Ausnahme vom Typ java.lang.Throwable-Klasse ist oder zu einer der Unterklassen der java.lang.Throwable-Klasse gehört.

Zweitens wird das Schlüsselwort „throws“ in der Methodensignatur in Java verwendet. Wenn die Methode Ausnahmen auslösen kann, wird dies durch diese Methode angezeigt. Die erwähnten Ausnahmen werden von ihren jeweiligen Aufruffunktionen behandelt. Dies geschieht entweder durch die Verwendung von try- und catch-Blöcken oder durch die Verwendung des throws-Schlüsselworts.

Drittens heißt die Superklasse für alle Arten von Fehlern und Ausnahmen in Java Throwable. Es ist ein Mitglied des Pakets java.lang. Die JVM oder die throw-Anweisung löst nur Instanzen dieser Klasse oder ihrer Unterklassen aus. Der catch-Block sollte nur ein Argument enthalten und von diesem Typ oder seinen Unterklassen sein. Falls benutzerdefinierte Ausnahmen erstellt werden, sollten sie diese Klasse ebenfalls erweitern.

23. Erklären Sie den StackOverflowError in Java.

Dies ist ein Fehler, der von der JVM ausgegeben wird, wenn der Stack zur Laufzeit überläuft.

24. Ist es möglich, eine Superklassenmethode, die eine ungeprüfte Ausnahme auslöst, mit geprüften Ausnahmen in der Unterklasse zu überschreiben?

Dies ist nicht möglich, denn wenn eine Superklassenmethode eine ungeprüfte Ausnahme auslöst, wird sie in der Unterklasse mit derselben Ausnahme oder anderen ungeprüften Ausnahmen überschrieben. Es kann jedoch nicht mit geprüften Ausnahmen überschrieben werden.

25. Definieren Sie verkettete Ausnahmen in Java.

In einem Programm kann eine Ausnahme viele Ausnahmen auslösen, indem sie einen Dominoeffekt hervorruft. Dies führt zu einer Kette von Ausnahmen. Es ist vorteilhaft, den Ort der tatsächlichen Ursache der Ausnahme zu kennen. Dies ist mit der Funktion für verkettete Ausnahmen in Java möglich. Dies wurde seit JDK 1.4 eingeführt. Für die Implementierung verketteter Ausnahmen in Java sind zwei neue Konstruktoren und zwei neue Methoden in der Throwable-Klasse enthalten. Diese sind,

Konstrukteure der Throwable-Klasse:

    1. Throwable(Throwable cause): Die Ursache ist die Ausnahme, die die aktuelle Ausnahme auslöst.
    2. Throwable(String msg, Throwable cause): Der msg-String ist die Ausnahmemeldung. Die Ausnahme, die die aktuelle Ausnahme auslöst, ist hier die Ursache.

Methoden der Throwable-Klasse:

    1. getCause()-Methode: Die wahre Ursache einer ausgelösten Ausnahme wird von dieser Methode zurückgegeben.
    2. Methode initCause(Throwable cause) : Die Ursache der aufrufenden Ausnahme wird von dieser Methode gesetzt.

26. Welche Klasse ist als Superklasse für alle Arten von Fehlern und Ausnahmen in Java definiert?

Die Superklasse für alle Arten von Fehlern und Ausnahmen ist java.lang.Throwable in Java.

27. Was kann als eine korrekte Kombination aus Try, Catch und Final Blocks gelten?

Eine Kombination aus Try- und Catch-Block.

Versuchen

{

// Block versuchen

}

fangen (Ausnahme Bsp.)

{

//Block fangen

}

Eine Kombination aus try und finally block.

Versuchen

{

// Block versuchen

}

endlich

{

// Endlich blockieren

}

Eine Kombination aus allen dreien: Ausprobieren, Blockieren, Blockieren schließlich.

Versuchen

{

// Block versuchen

}

fangen (Ausnahme Bsp.)

{

//Block fangen

}

endlich

{

// Endlich blockieren

}

28. Warum verwenden Sie die Methode printStackTrace()?

Diese Methode wird verwendet, um detaillierte Informationen über die aufgetretene Ausnahme zu drucken.

29. Was sind einige Beispiele für geprüfte Ausnahmen?

Einige Beispiele für geprüfte Ausnahmen sind ClassNotFoundException, SQLException und IOException.

30. Was sind einige Beispiele für ungeprüfte Ausnahmen?

Einige Beispiele für ungeprüfte Ausnahmen sind NullPointerException, ArrayIndexOutOfBoundsException und NumberFormatException.

Lesen Sie auch: 47 Fragen und Antworten zu OOPS-Interviews für Neulinge und Erfahrene müssen gelesen werden

Einpacken

Wenn Sie mehr über Big Data erfahren möchten, schauen Sie sich das PG-Diplom in Full-Stack-Softwareentwicklung von upGrad & IIIT-B an, das für Berufstätige konzipiert ist und mehr als 500 Stunden strenge Schulungen, mehr als 9 Projekte und Aufgaben, IIIT, bietet -B Alumni-Status, praktische praktische Schlusssteinprojekte und Jobunterstützung bei Top-Unternehmen.

Wenn Sie daran interessiert sind, Data Science zu lernen und sich für eine Karriere in diesem Bereich entscheiden, sehen Sie sich das Executive PG Program in Data Science von IIIT-B & upGrad an, das für Berufstätige entwickelt wurde und mehr als 10 Fallstudien und Projekte sowie praktische Workshops bietet , Mentoring mit Branchenexperten, 1-on-1 mit Branchenmentoren, mehr als 400 Stunden Lern- und Jobunterstützung bei Top-Unternehmen.

Bereiten Sie sich auf eine Karriere der Zukunft vor

Bewerben Sie sich für den Master of Science in Data Science