Sep 29

Die IllegalArgumentException wird ausgelöst, wenn einer Methode ein ungültiger Parameterwert übergeben wird. Da es sich um eine RuntimeException handelt, ist ein try/catch/finally-block nicht nötig. Am häufigsten wird diese Methode vom Programmierer eingefügt:

public class Angestellter {


int PersNr;


void setPersNr (int PersNr){


if (PersNr <=0)
//PersNr < 0 ist unlogisch und soll abgefangen werden

throw new IllegalArgumentException();

else

this.PersNr=PersNr;

}

public static void main(String args[]) {


Angestellter a = new Angestellter();
a.setPersNr(0);


}

}

In diesem Falle wird die unsinnige Eingabe einer negativen Personalnummer überprüft und ggfs eine IllegalArgumentException geworfen.

Tagged with:
Sep 27

Während ClassNotFoundException häufiger vorkommt als NoClassDefFoundError, ist es im Allgemeinen ein Indiz dafür, dass ein Java-Archiv im Klassenpfad fehlt.

Beim Aufruf der Klasse kommt es oft zu diesem Fehler. Mögliche Ursachen könnten folgende sein:

  • Die Klasse muss als public gesetzt sein. z.B. public class MeineKlasse
  • Die Classpath – Umgebungsvariable muss den Ordner der Klasse bzw. des Pakets enthalten.
  • Wenn die Klasse in einem Paket ist, muss sie überden Paketnamen aufgerufen werden, z.B. java paket.Klasse
  • Der Aufruf der Datei erfolgt ohne die Dateiendung “.class”
Tagged with:
Sep 25

Wenn der Stapelspeicher ausgeschöpft ist, wird ein StackOverflowError geworfen:

class Angestellter {


static void overflow () {

overflow();

}

public static void main(String args[]) {

overflow();

}

}

In diesem Falle wurde eine sich  immer wieder selbst aufrufende Methode definiert, die den Stapelspeicher ausschöpft.

Tagged with:
Sep 24

Compiliert dieser Code einwandfrei?

class NeueException extends IOException {

void test() throws NeueException {

throw NeueException();

}

}



Antwort/ answer

Tagged with:
Sep 23

ExceptionInInitializerError wird ausgegeben, wenn die statische Initialisierung aufgrund einer Ausnahme fehlschlägt:

class Angestellter {


public static int H = new Integer(“Test”);
// “Test” kann nicht zum Integer geboxt werden


public static void main(String args[]) {

System.out.println(H);


}

}

java.lang.ExceptionInInitializerError
Caused by: java.lang.NumberFormatException: For input string: “start”
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.<init>(Unknown Source)
at Angestellter.<clinit>(Angestellter.java:18)
Exception in thread “main”

Achtung: Falls es sich nicht um eine statische Variable handelt, wird eine NumberFormatException geworfen

Tagged with:
Sep 21

Eine NullPointer Exception wird ausgegeben, wenn der Compiler keinen Wert hat, mit dem er arbeiten kann:

class Angestellter {


public int PersNr;

public static void main(String args[]) {


Angestellter a = null;
// a zeigt auf null; PersNr ist nicht initialisiert
System.out.println(a.PersNr); // Da nicht initialisiert NullPointerException


}

}

Ein anderes Beispiel, welches gerne im Zusammenhang mit Strings abgefragt wird:

String s = null;
System.out.println(s.length());
// Hier die gleiche Logik; da s nicht initialisiert ist, gibt es auch nichts, worauf die Methode length zugreifen kann.

Tagged with:
Sep 20

Wie ist der Output des folgenden Codes?

ArrayList Mitarbeiter = new ArrayList();
Mitarbeiter.add(5);
Integer mitarbeiter= Mitarbeiter.get(0);
System.out.println(mitarbeiter);

Antwort/ answer
Tagged with:
Sep 19

Wenn wir davon ausgehen, dass die Klassen Buchhalter und Verkäufer beide unabhängig voneinander von der Klasse Angestellter abgeleitet sind,  führen

Buchhalter a = new Buchhalter ();
Verkäufer b = (Verkäufer) a ;

direkt zu einem CompilerFehler, aber Fehler wie

Angestellter  c = new Buchhalter();
Verkäufer d = (Verkäufer) c;

und auch

Buchhalter e = (Buchhalter)new Angestellter ();

werden erst zur Laufzeit erkannt und ausgeworfen.

Grund ist, dass Buchhalter und Verkäufer nicht miteinander verknüpft sind, Buchhalter/ Angestellter bzw. Verkäufer/ Angestellter aber schon.

Hier auch noch ein älterers Beispiel zu diesem Thema.

Tagged with:
Sep 17

ArrayIndexOutOfBoundsException tritt immer dann auf, wenn auf einen Index im Array zugegriffen werden soll, der nicht vorhanden ist:

int a [ ] = {10,20};
a[2]=30;

Dies wird nicht vom Compiler abgefangen, sondern es wird von der JVM zur Laufzeit eine Exception geworfen.

Tagged with:
Sep 15

Leider geht es jetzt wieder um graue Theorie; die Herkunft von Exceptions/ Errors; es gibt nämlich 2 große Herkunftsarten:

Java Virtual Machine (JVM) Exceptions/ Errors

Exceptions, die von der JVM geworfen werden, z.B.

  • ArrayIndexOutOfBoundsException
  • ClassCastException
  • NullPointerException
  • ExceptionInInitializerError
  • StackOverflowError
  • NoClassDefFoundError

programmatische Exceptions/ Errors (RuntimeExceptions)

Exceptions, die von dem Programmierer, geworfen oder verursacht werden, z.B.

  • IllegalArgumentException
  • IllegalStateException
  • NumberFormatException
  • AssertionError

So, und nun die schlechte Nachricht; diese sollte man im SCJP auseinanderhalten können. Ich werde die nächsten Tage hierauf näher eingehen.

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