Aug 29

Vielleicht fragt sich der eine oder andere, wie der Compiler weiß, welche Exception er aufnehmen muss; es ist relativ einfach: Mit Ausnahme der RuntimeException müssen diese deklariert werden:

class Angestellter {

int PersNr;

void setPersNr(int PersNr) throws IOException { // Deklarierung, dass diese Methode einen Fehler wirft

if (PersNr > 1000)

throw new IOException();// Werfen des Fehlers

else

this.PersNr=PersNr;

}

public static void main(String args[]) {


Angestellter a = new Angestellter();

try { // Unerlässlicher try-Block; weglassen führt zu CompilerFehler

a.setPersNr(1001)  ;

} catch (IOException e){ e.printStackTrace(); } // Auffangen des Fehlers und Ausgabe der Fehlermeldungen


}

}

Tagged with:
Aug 26

An welchen Stellen des Codes treten Fehler auf?

Integer i;

List<Integer> a = new ArrayList(); //1
List<Integer> b = new ArrayList<Integer>();
//2
List c = new ArrayList<Integer>();//3
List d = new ArrayList();//4

a.add(1);//5
b.add(2);//6
c.add(3);//7
d.add(4);//8

i = a.get(0);//9
i = b.get(0);//10
i = c.get(0);//11
i = d.get(0);//12

Antwort/ answer
Tagged with:
Aug 26

Was ist die Ausgabe des folgenden Codes?

class Dog {

public static void main(String[] args) {

List a = new ArrayList <Integer>();
a.add(2);
a.add(3);
Iterator <Integer> i = a.iterator();
a.add(4);
while (i.hasNext())

System.out.println(i.next());

}

}

Antwort/ answer
Tagged with:
Aug 25

Heute möchte ich ein wenig auf die Hierarchie(n) von Exceptions eingehen:

alternativer Text

An oberster Stelle steht die Klasse Throwable, die (wie alle Klassen) eine Sub-Klasse von Object ist.

Fehler/Errors sind Probleme, die zur Laufzeit nicht behandelt werden können, z.B. fehlender Speicherplatz (OutofMemoryError) und direkt zum Absturz des Programms führen.

Exceptions/ Ausnahmen sind behandelbare Probleme, z.B. kann (im Gegensatz zu Errors) bei einem abgefangenen NullPointer problemlos weitergearbeitet werden; ohne Speicherplatz (bei Error) aber nicht.

RuntimeExeption ist eine Basisklasse für alle Exceptions, die zur Laufzeit auftreten. Sie entstehen durch Fehler, die der Programmierer selbst verursacht hat.  Von dieser Klasse sind weitere, differenziertere Exceptions (z.B. NullPointerException, ArithmeticException, …) abgeleitet.

Eine andere von Exeption abgeleitete Klasse, ist z.B. java.io.IOException, die sowie deren abgeleitete Klassen ( z.B. java.io.FileNotFoundException) z.B. bei der Arbeit mit Dateien angewandt werden kann.

Die Implementierung dieser Hierarchie sieht folgendermaßen aus:

try { ….  }
catch (ArithmeticException e){ …  } // fängt ArithmeticExeptions auf
catch (NullPointerException e) {  … } // fängt NullPointerExceptions auf
catch (RuntimeException e) {  …  } // fängt RunTimeExeptions auf
catch (Exception e){ … } // fängt alle Exceptions auf

Die Reihenfolge muss  immer entgegengesetzt der Hierarchie sein; da Exception ja alles auffängt und die weiteren catch dann nicht mehr beachtet und damit überflüssig wären. Der Compiler erkennt dies und gibt einen CompilerFehler aus.

Grundsätzlich ist es nicht ratsam alle mit catch (Exception e) alle Exceptions aufzufangen, da auch unvorhergesehene Fehler auftreten können, die der Programmierer (und somit später das Programm) nicht berücksichtigen.

Tagged with:
Aug 23

Exceptions sind immer eine Unterklasse von java.lang.Exception. Ich habe schon häufiger im catch-block

catch (Exception e) { … } oder catch (ArithmeticException e){ … }

geschrieben und möchte heute auf den Inhalt zwischen den Klammern etwas näher eingehen:

e ist in diesem Falle eine Instanz der Klasse Exception, bzw. ArithmeticException (oder jeder anderen Klasse, deren Exception aufgefangen wird), dessen Methoden wie bei jeder anderen Klasse aufgerufen werden können.

Eine sehr häufige Methode ist printStackTrace(), welche die Ausgabereihenfolge bei nicht-Abfangen einer Exception kontrolliert ausgibt. Wichtig in diesem Zusammenhang ist auch, dass leere geschweifte Klammern durchaus erlaubt, aber relativ nutzlos sind.

catch (Exception e) {  }

nimmt fängt zwar die Fehler, aber macht nichts damit.  Ohne e.printStackTrace oder andere Informationen/Maßnahmen wird dieser Fehler versteckt und nicht sichtbar gemacht.

Tagged with:
Aug 21

Für den Fall, dass eine Methode eine Exception wirft, die von einer anderen Methode aufgerufen wird, wird die Exception bis ans Hauptprogramm durchgereicht.

class Angestellter {

static void test() { test2(); }

static void test2 () { test3(); }

static void test3 () { int i = 1/0; }

public static void main(String args[]) {

test();
}

}

Der Methodenaufruf ist wie folgt:

main -> test() -> test2() -> test 3; die Exception wird in test3 geworfen. Da in unserem Beispiel diese Ausnahme nicht abgefangen und behandelt wird führt diese zu einem Programmabsturz. Jede Methode informiert ihre jeweils aufrufende Methode über die aufgetretene Exception.

Die Ausgabe ist wie folgt:

Exception in thread “main” java.lang.ArithmeticException: / by zero
at Angestellter.test3(Angestellter.java:15)
at Angestellter.test2(Angestellter.java:13)
at Angestellter.test(Angestellter.java:11)
at Angestellter.main(Angestellter.java:18)

Somit kann an der Ausgabereihenfolge auch sehr gut erkannt werden, von wo (Fehlerquelle zuerst) nach wo (Endpunkt zuletzt) der Fehler aufgetreten ist und weitergegeben wurde. Der Methodenaufruf wird also umgekehrt dargestellt.

Tagged with:
Aug 20

Was ist der Output des folgenden Codes?

final int PersNr=123;
System.out.println(PersNr);
int PersNr_new= PersNr++;
System.out.println(PersNr_new);

Antwort/ answer
Tagged with:
Aug 20

Wie ist der Output des folgenden Codes?

Number[]a = new Integer[3];
System.out.println(a[2]);

Antwort/ answer
Tagged with:
Aug 20

Nenne zwei Wege um getPersNr() aufzurufen:

class Angestellter{

public static void getPersNr() { … }

public static void main(String args[]) {

//Hier Code eingeben

}

}

Antwort/ answer
Tagged with:
Aug 20

Was ist der Output des folgenden Codes?

Boolean a = new Boolean(“TRUE”);
Boolean b = new Boolean(“FAlse”);
Boolean c = new Boolean(“PersNr”);

System.out.println(a+” “+b+” “+c);


Antwort/ answer

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