5.6.3 | finally |
Nach einer try-Anweisung kann optional eine finally-Anweisung folgen. Die Anweisungen im finally-Block werden grundsätzlich ausgeführt, unabhängig davon, ob während der Ausführung des try-Blocks eine Exception aufgetreten ist oder nicht. Der finally-Block kommt auch vor der Weiterleitung einer Exception an den nächsthöheren Programmblock zur Ausführung, wenn keine oder keine passende catch-Anweisung vorhanden ist. In einer finally-Anweisung können »Aufräumarbeiten« programmiert werden, die auch nach einer Exception unbedingt ausgeführt werden müssen.
Die folgende Methode konvertiert die Strings im Array src in int-Werte und speichert sie im Array dst. Während der Verarbeitung werden die Zahlen in einem temporären Array gehalten, das am Ende der Konvertierung sofort zur Garbage Collection freigegeben werden soll, und zwar unabhängig davon, ob eine Exception aufgetreten ist oder nicht.int[] temp; ... public void convertStr(String[] src, int[] dst) { temp = new int[src.length]; try { for(int i = 0; i < src.length; i++) temp[i] = Integer.parseInt(src[i]); System.arraycopy(temp, 0, dst, 0, temp.length); } finally { // temporären Puffer freigeben temp = null; } }Ein finally-Block kommt auch dann zur Ausführung, wenn der try-Block durch eine break- oder continue-Anweisung abgebrochen wurde.