Jan 06

Welche Exceptions werden von der JVM geworfen und welche vom Programmierer geworfen/ verursacht?

  1. AssertionError
  2. ClassCastException
  3. NullPointerException
  4. IllegalStateException
  5. ExceptionInInitializerError
  6. StackOverflowError
  7. NoClassDefFoundError
  8. IllegalArgumentException
  9. ArrayIndexOutOfBoundsException
  10. NumberFormatException
Antwort/ answer
Tagged with:
Okt 03

Hier hatte ich ja schon den Unterschied zwischen ExceptionInInitializerError und NumberFormatException erklärt, deswegen an dieser Stelle nur ein Beispiel zur NumberFormatException:

public class Angestellter {

public int H = new Integer(“Test”);

public static void main(String args[]) {

Angestellter a = new Angestellter ();

System.out.println(a.H);

}

}

Tagged with:
Okt 01

Die IllegalStateException wird von einer Methode ausgelöst, wenn sich das zugehörige Objekt in einem Zustand befindet, in dem der Aufruf nicht erlaubt ist:

Scanner scanner = new Scanner (System.in)

while (scanner.hasNext()){


scanner.close();
// Schliessung des Scanners


}

Nach Schließung des Scanners kann scanner.hasNext() nicht mehr ausgeführt werden und wirft eine IllegalStateException aus.

Tagged with:
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 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 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