web-dev-qa-db-de.com

Ist es gültig, endlich ohne Versuch und Fang blockieren zu können?

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?

15
prashanth

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.

14
NINCOMPOOP

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
}
6
Duncan Jones
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
}
4
Ankit Sood

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

2
stinepike

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.

1
CodeCamper

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.

1
Shabbir

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. 

  1. versuchen Fang endlich 

  2. versuchen Fang

  3. versuchen endlich 

0
PermGenError
  • Die Verwendung von try block ist nicht korrekt.
  • Der Try-Block kann nur mit einem Block von catch oder final Block verwendet werden.
  • Sie können try block mit catch und finally verwenden. Wenn Sie finally block.
0
Reetika

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.

0
Bathsheba

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.

0
Sreejesh K Nair