Aug 17

This post is also available in: Englisch

finally wird wirklich immer aufgerufen, selbst wenn aus dem Unterprogramm ins Hauptprogramm mit return zurückgekehrt werden soll.

class Angestellter {

static void test() {

File datei = new File(“Test.txt”);

try {

int [] a = new int [4];
a[3]=1;
return;
// Rückkehr zur main

}catch (Exception e){

System.out.println(“Exception aufgefangen”);

}

finally { // wird sogar bei/vor return aufgerufen

System.out.println(“In finally”);

}

System.out.println(“Nach Finally”);

}

public static void main(String args[]) {


System.out.println(“Aufruf Methode” );
test();
System.out.println(“Nach Methodenaufruf”);


}


}

Die Ausgabe ist demnach:

Aufruf Methode
In finally
Nach Methodenaufruf

Vor dem Verlassen der Methode wird also noch finally aufgerufen.

Für den Fall, das die Exception ausgelöst wird, ist die Ausgabe:

Aufruf Methode
Exception aufgefangen
In finally
Nach Finally
Nach Methodenaufruf

Grund für die veränderte ausgabe ist, das der try-Block beim Auswurf einer Exception nicht weiter ausgeführt und in unserem Beispiel return nicht mehr gelesen wird.  Somit wird der Rest des Codes und nicht return ausgeführt.

  • Print
  • del.icio.us
  • Facebook
  • Twitter
  • Google Bookmarks
  • Add to favorites
  • RSS
  • Blogosphere
  • email
  • PDF
  • Wikio
  • Technorati
  • Digg
  • DZone

Leave a Reply

preload preload preload
http://www.wikio.de Blog Top Liste - by TopBlogs.de Blogverzeichnis - Blog Verzeichnis bloggerei.de Bloggeramt.de Software
Webbhotell Top Blogs