Schließlich Blöcke erlauben Sie, als Entwickler, aufzuräumen Nach dir selbst, unabhängig von den Aktionen des vorhergehenden Codes im try {} Block aufgetretene Fehler, und andere haben darauf hingewiesen, fällt fällt hauptsächlich unter den Schirm der Ressourcen zu befreien - Schließen von Zeigern/Sockets/Ergebnismengen, die Verbindungen zurück zu ein Pool etc.
@mats ist sehr richtig, dass es immer das Potenzial für „harte“ Ausfälle ist - schließlich sollten Blöcke nicht unternehmenskritischen Code enthalten, die immer transaktions innerhalb des try getan werden sollte {}
@mats wieder - Die wahre Schönheit ist, dass es Ausnahmen wieder aus den eigenen Methoden werfen kann, und garantiert immer noch, dass Sie aufzuräumen:
try
{
StreamReader stream = new StreamReader("foo.bar");
mySendSomethingToStream(stream);
}
catch(noSomethingToSendException e) {
//Swallow this
logger.error(e.getMessage());
}
catch(anotherTypeOfException e) {
//More serious, throw this one back
throw(e);
}
finally
{
stream.close();
}
So können wir viele Arten von Ausnahmen, verarbeitet sie anders fangen (der erste erlaubt die Ausführung für alles jenseits des try {}, der zweite kehrt effektiv zurück), aber immer sauber und ordentlich aufräumen.
Möglicherweise möchten Sie eine Programmiersprache angeben. Das Verhalten hängt von der Sprache ab. –
Um die beste Antwort zu finden, müssen Sie klären, ob die try/catch Blöcke tatsächlich leer sind oder nicht. Wie in einer der Antworten angegeben, ist die Semantik die gleiche, wenn die try/catch-Blöcke leer sind, ansonsten sprechen unterschiedliche Antworten auf die semantischen Unterschiede an. – Kasper
Ich stimme früheren Kommentaren zu, Sie müssen die tatsächliche Sprache klären und die gegebenen Antworten ernsthaft überprüfen. Die upmodded Antworten sind entweder falsch oder unvollständig. –