Ich versuche den finally-Block zu verwenden, ohne die try/catch-Blöcke zu verwenden, aber den Fehler in Eclipse zu erhalten.
Kann ich den finally-Block ohne die try/catch-Blöcke verwenden?
finally
sollte mindestens einen try
-Block haben, catch
ist optional. Endlich blockiert man, um sicherzustellen, dass Dinge bereinigt werden, ob eine Ausnahme ausgelöst wird oder nicht. Wie in der JLS
Eine finally-Klausel stellt sicher, dass der finally-Block nach dem try-Block und einem eventuellen catch-Block ausgeführt wird, unabhängig davon, wie die Kontrolle den try- oder catch-Block verlässt.
Daher sollte einer finally
immer ein try
-Block vorangestellt werden.
Sie müssen einen try
-Block mit einem finally
-Block haben. Der try
-Block definiert, auf welche Codezeilen der finally
-Code folgt. Wenn vor dem try
-Block eine Ausnahme ausgelöst wird, wird der finally
-Code nicht ausgeführt.
Das Hinzufügen von catch
-Blöcken ist optional:
try {
// something
} finally {
// guaranteed to run if execution enters the try block
}
try {
// Block of code with multiple exit points
}
finally {
// Block of code that must always be executed when the try block
// is exited, no matter how the try block is exited
}
Der finally-Block wird immer ausgeführt, wenn der try-Block beendet wird. Sie können also endlich ohne catch verwenden, müssen es aber versuchen.
Weitere Informationen finden Sie hier: doc
Der Grund, warum Sie keine finally
ohne try
haben können, liegt darin, dass Sie () mehrere finally
-Anweisungen im selben Geltungsbereich haben und dass try
angibt, auf welchen Codeblock sich die finally
-Komponente bezieht, falls ein Fehler auftritt.
Ein weiteres interessantes Feature von finally
ist, dass es unabhängig von der Eingabe von try
ausgeführt werden muss. Was ist beispielsweise, wenn Sie eine goto
-Anweisung verwenden, um Ihre finally
-Anweisung zu überspringen? Befindet sich goto
innerhalb von try
, wird die Anweisung finally
ausgeführt. Wenn goto
über/außerhalb der try
-Anweisung liegt, wird der finally
-Code übersprungen. finally
ist nur für den Code relevant, der in try
eingeschlossen ist. Wenn Sie keinen Versuch haben, ist finally
für nichts relevant.
Wenn vor dem try-Block eine Ausnahme ausgelöst wird, wird der finally-Code nicht ausgeführt. Der finally-Block wird immer ausgeführt, wenn der try-Block beendet wird. Sie können also endlich ohne catch verwenden, müssen es aber versuchen.
Von Oracle Trails:
Der finally-Block wird immer ausgeführt, wenn der try-Block beendet wird. Diese stellt sicher, dass der finally-Block auch dann ausgeführt wird, wenn ein unerwarteter Ausnahme tritt auf.
Von der obigen Anweisung aus können Sie nicht alleine alleine blockieren. unten sind die zulässigen Kombinationen.
versuchen Fang endlich
versuchen Fang
versuchen endlich
Der Code innerhalb des finally
-Blocks wird garantiert ausgeführt, wenn der Programmsteuerungsablauf in den entsprechenden try
-Block eintritt. Es macht also keinen Sinn, eine finally
ohne eine try
zu haben.
Die einzige Ausnahme ist, wenn das Programm vor dem finally
-Block auf einen System.exit(...)
-Aufruf stößt, da die virtuelle Maschine dadurch heruntergefahren wird.
Nein, das kannst du nicht
sie können Try-catch-finally
oder try-finally
verwenden.
try {
}catch (Exception e){
}
finally{
}
oder
try {
}
finally{
}
Eine try-Anweisung sollte entweder einen catch-Block oder einen finally-Block haben, sie kann beide Blöcke haben.
Wir können keinen Code zwischen try-catch-finally-Block schreiben.
Ohne eine try-Anweisung können wir keine catch- oder final-Klausel haben.
Wir können mehrere catch-Blöcke mit einer einzigen try-Anweisung haben. Try-catch-Blöcke können ähnlich wie if-else-Anweisungen geschachtelt werden.
Wir können nur einen finally-Block mit einer try-catch-Anweisung haben.