Ausnahme vs Fehler
Unerwartetes Verhalten tritt zwangsläufig auf, wenn ein Programm ausgeführt wird. Dies kann an Ausnahmen oder Fehlern liegen. Ausnahmen sind Ereignisse, die den normalen Programmablauf stören können. Fehler sind Bedingungen, die als nicht wiederherstellbar angesehen werden können. Ausnahmen beziehen sich meistens auf die Anwendung selbst, während sich die Fehler auf das System beziehen, auf dem das Programm ausgeführt wird.
Was ist eine Ausnahme??
Ausnahme ist ein Ereignis, das den normalen Programmablauf stören kann. Die Namensausnahme stammt von „außergewöhnlichem Ereignis“. Eine Ausnahme wird ausgelöst, indem ein Ausnahmeobjekt erstellt und an das Laufzeitsystem übergeben wird. Das Ausnahmeobjekt wird von der Methode erstellt, in der die Ausnahme aufgetreten ist. Das Ausnahmeobjekt enthält nützliche Informationen wie den Typ und die Beschreibung der Ausnahme. Wenn das Laufzeitsystem das Ausnahmeobjekt empfängt, versucht es, jemanden zu finden, der es im Aufrufstapel behandelt, indem es in umgekehrter Reihenfolge (in der die Methoden aufgerufen wurden) durchlaufen. Call Stack ist die geordnete Liste von Methoden, die vor der Methode aufgerufen wurden, in der die Ausnahme aufgetreten ist. Das Laufzeitsystem ist erfolgreich, wenn es eine Methode mit einem Ausnahmehandler findet. Exception-Handler ist ein Codeblock, der die besagte Exception offiziell behandeln kann. Wenn das Laufzeitsystem einen geeigneten Handler findet (d. H. Der Typ der Ausnahme entspricht dem Typ, der gehandhabt werden kann), wird das Ausnahmeobjekt an den Handler übergeben. Dies wird als Abfangen der Ausnahme bezeichnet. Wenn die Ausnahme jedoch nicht behandelt werden kann, wird das Programm beendet. In Java erben Ausnahmen von 'Throwable-Klasse'. NullPointerException und ArrayIndexOutOfBoundsException sind zwei häufige Ausnahmen in Java.
Was ist ein Fehler??
Ein Fehler ist eine Bedingung, die als nicht wiederherstellbar angesehen werden kann, z. B. wenn das Programm mehr Speicherplatz benötigt als verfügbar ist. Diese Fehler können zur Laufzeit nicht behandelt werden. Wenn ein Fehler auftritt, wird das Programm beendet. In Java erben Fehler von der Throwable-Klasse. Fehler stehen in der Regel für schwerwiegende Probleme, die der Programmierer (oder die Anwendung) nicht versuchen sollte, zu fangen. Fehler sind einfach abnormale Bedingungen, von denen unter normalen Umständen nie zu erwarten ist, dass sie niemals vorhersehbar sind. Beispielsweise sind OutOfMemoryError, StackOverflowError und ThreadDead solche Fehler. Methoden sollten niemals Handler für Fehler enthalten.
Was ist der Unterschied zwischen Ausnahme und Fehler?
Sowohl Fehler als auch Ausnahmen sind während der Ausführung eines Programms unerwünscht. Sie haben jedoch wesentliche Unterschiede. Der Programmierer kann Ausnahmen vorhersehen, während ein Fehler schwer vorhersehbar ist. Ausnahmen können überprüft oder deaktiviert werden. Fehler werden jedoch immer nicht geprüft. Ausnahmen weisen normalerweise auf einen vom Programmierer verursachten Fehler hin. Fehler treten jedoch aufgrund eines Systemfehlers oder einer unangemessenen Verwendung einer Ressource auf. Ausnahmen sollten daher auf Anwendungsebene behandelt werden, während Fehler auf Systemebene behoben werden sollten (nur wenn möglich). Nachdem Sie eine Ausnahme behandelt haben, kehren Sie garantiert zum normalen Programmablauf zurück. Aber selbst wenn ein Fehler erkannt wird, weiß der Programmierer möglicherweise nicht, wie er damit umgehen soll. Im Gegensatz zur herkömmlichen Fehlerbehandlung ermöglichen Ausnahmen die Trennung von Fehlerbehandlungscode von regulärem Code.