2016-03-31 19 views
1

Ich habe einen Test, den ich ausführen möchte. Egal, ob es passiert oder einen Fehler gibt, ich möchte einen Fall, den es geöffnet hat, schließen. Ich habe an der Spitze der Klasse String theCase = null; Dann in executeText() ich es einstellen, sobald der Fall geöffnet ist.Mit endlich ohne einen Haken

Also tat ich dies:

try { 
    executeTest(tContext); 
} catch (Throwable t) { 
    throw t; 
} finally { 
    if (theCase != null) { 
     closeCase(user, theCase); 
    } 
} 

frage ich mich. Brauche ich den Fang (Throwable t)? Ich will immer noch, dass der Fehler ausgelöst wird, aber zuerst möchte ich, dass der Fall geschlossen wird. Wenn ich es nicht fange und werfe es, wird es schließlich nicht werfen? Oder wird es nicht erwischt und wirft die Ausnahme und führt das schließlich nicht aus? Ich bin ein bisschen unklar über endlich.

+0

Ist das Java? Das Verhalten des Blocks "try-catch-finally" unterscheidet sich zwischen den Sprachen (C#, Java usw.). – metacubed

Antwort

2

Brauche ich den Haken (Throwable t)?

Nein, tun Sie nicht.

In der Tat ist es schädlich, denn wenn Sie Throwable so fangen und werfen, dann müssen Sie für einige Versionen von Java die umschließende Methode als throws Throwable ... und so weiter deklarieren. (Das war Adresse in Java 8, IIRC.)

1

Schließlich wird ausgeführt, unabhängig davon, ob eine Ausnahme ausgelöst wurde oder nicht, oder ob es von einem Catch-Block neu ausgelöst wurde.