2016-03-19 3 views
0

Ich versuche, den Unterschied zwischen Fehler und Ausnahme zu verstehen, aber es sieht genauso aus und auf Oracle Official tutorials Ich lese diese Zeile.Was bedeutet durch behebbare und nicht behebbare Ausnahme oder Fehler

Geprüfte Ausnahmen unterliegen der Anforderung Catch oder Specify. Alle Ausnahmen sind geprüfte Ausnahmen, außer denen, die durch Fehler, RuntimeException und ihre Unterklassen angezeigt werden.

Jetzt über ich denke, es ist das gleiche. Aber nachdem ich mehr gesucht hatte, fand ich einen Unterschied als theoretisch.

Ausnahme: sind erstattungsfähig

Fehler: nicht erstattungsfähig.

Exception Beispiel:

try{ 
    read file 
} 
catch(FileNotFoundException e){ 
// how I can recover here? can i create that file? 
// I think we can just make log file to continue or exit. 
} 

Fehler Beispiel:

try{ 
     try to locate memory 
} 
catch(MemoryError e){ 
    // I think we can just make log file to continue or exit. 
} 

Edited Ich frage über verwertbare und nicht erstattungsfähig.

+0

Mögliche Duplikat nicht wiederherstellen [Java ausgewählt vs ungeprüfte Ausnahmeerklärung] (http://stackoverflow.co m/questions/6115896/java-checked-vs-unchecked-exception-Erklärung) – hotzst

+0

@AndyTurner was bedeutet durch wiederherstellbar? – UnKnown

+0

@hotzst warum duplizieren? Meine Frage betrifft die Wiederherstellung und nicht wiederherstellbar. – UnKnown

Antwort

2

Fehler, wie Sie bereits herausgefunden haben, bedeutet, dass Sie in ernsthaften Schwierigkeiten sind. In einem Catch-Block können Sie vielleicht etwas Logging machen, aber das wars.

Eine nicht behebbare Ausnahme sind meist Laufzeitausnahmen wie NullPointerException sie sind in der Regel das Ergebnis einiger verpasster Checks im Programmcode. Daher besteht die Lösung normalerweise darin, den Code zu reparieren.

Eine behebbare Ausnahme ist etwas, von dem Sie wissen, dass es passieren kann und bestimmte Maßnahmen ergreifen. Stellen Sie sich eine Webanwendung vor, die einen Back-End-Dienst aufruft. Dieser Dienst kann verfügbar sein oder nicht, wodurch die Ausführung des Vorgangs fehlschlagen kann. Daher haben Sie eine geprüfte Ausnahme, in diesem Fall höchstwahrscheinlich eine benutzerdefinierte Ausnahme, die Sie durch, und dann behandeln Sie es im Front-End-Code in einer Weise, die Sie dem Benutzer sagen, tut mir leid, Back-End-Service XY ist, versuchen Sie es später erneut oder kontaktieren Sie den Support . Recoveralbe bedeutet nicht, dass die Anwendung etwas tun kann, um die Ursache der Ausnahme zu beheben, obwohl es Fälle geben kann, in denen dies möglich ist.

+0

Gute Eins. und was ist der Durchschnitt der Zeile, die ich aus offiziellen Tutorials zitiert habe? – UnKnown

0

Alle Klassen, die von der Klasse Exception, aber nicht direkt oder indirekt von der Klasse RuntimeException erben, werden als überprüfte Ausnahmen betrachtet. Solche Ausnahmen werden in der Regel durch Bedingungen verursacht, die nicht unter der Kontrolle des Programms stehen. Beispiel

  • in Dateiverarbeitung kann das Programm eine Datei nicht öffnen, wenn es nicht nicht vorhanden ist.

Erzielbarer Damit ist es sehr einfach, zu wissen, ob eine Datei nicht so tut existiert Sie nicht brauchen, diese Datei zu öffnen, damit das ist erzielbare

Alle Ausnahmetypen, die direkten oder indirekten Subklassen RuntimeException (Paket Java.lang) sind ungeprüfte Ausnahmen. Diese werden normalerweise durch Fehler im Programmcode verursacht. Beispiel

  • ArrayIndexOutOfBoundsExceptions
  • ArithmeticExceptions
  • Fehler

Unrecoverable So thatswhy Programm kann von dieser Art von Fehler oder Ausnahmen

Verwandte Themen