Javakurs/Übungsaufgaben/Errors: Unterschied zwischen den Versionen
< Javakurs | Übungsaufgaben
(→'''CompilerFehler''') |
(→'''LaufzeitFehler''') |
||
Zeile 91: | Zeile 91: | ||
*Ihr versucht auf ein Array Feld zuzugreifen, was ausserhalb der Größe des Arrays liegt. | *Ihr versucht auf ein Array Feld zuzugreifen, was ausserhalb der Größe des Arrays liegt. | ||
*Sucht in der angegeben Zeile nach dem Zugriff auf das Array und erweitert notfalls die Größe des Arrays. | *Sucht in der angegeben Zeile nach dem Zugriff auf das Array und erweitert notfalls die Größe des Arrays. | ||
+ | |||
+ | |||
+ | ==java.lang.NullPointerException== | ||
+ | bruja shabanov 13 (Desktop/JavaKurs): java Errors | ||
+ | Exception in thread "main" java.lang.NullPointerException | ||
+ | at Errors.main(Errors.java:5) | ||
+ | *Ihr versucht auf eine Variable zuzugreifen oder führt mit ihr Operationen aus, obwohl sie noch nicht initialisiert ist. | ||
+ | *Das passiert oft wenn man mit z.B. String Arrays arbeitet. Obwohl man das Array initialisiert sind die Elemente darin noch nicht initialisiert. | ||
+ | String[] stringArray = new String[12]; | ||
+ | *Hier kann es helfen, den Array Elementen entweder direkt Werte zuzuweisen oder mit einer Schleife alle auf einen default Wert setzen: | ||
+ | for(int i = 0 ; i < stringArray.length ; i++ ){ | ||
+ | stringArray[i] = ""; | ||
+ | } | ||
+ | |||
+ | ==java.lang.ArithmeticException== | ||
+ | bruja shabanov 15 (Desktop/JavaKurs): java Errors | ||
+ | Exception in thread "main" java.lang.ArithmeticException: / by zero | ||
+ | at Errors.main(Errors.java:4) | ||
+ | *Dieser Fehler tritt auf, wenn ihr versucht ungültige arithmetische Operationen auszuführen, wie hier die Division durch 0. | ||
+ | *Ihr könnt euch Gedanken über das axiomatische Gerüst der Mathematik machen und nach einem Weg suchen durch 0 zu teilen, einfach ist es jedoch wenn ihr einfach nicht durch 0 teilt, keine Wurzeln aus negativen Zahlen zieht usw. |
Version vom 12. April 2007, 12:09 Uhr
Inhaltsverzeichnis
CompilerFehler
Klammer fehlt
bruja shabanov 10 (Desktop/JavaKurs): javac Errors.java Errors.java:7: '}' expected ^ 1 error
- Es fehlt einfach eine geschweifte Klammer.
- Jedes mal wenn ihr eine geschweifte Klammer aufmacht, macht sie gleich wieder zu, damit ihrs später nicht vergesst.
- Bei Klammerfehlern solltet ihr nach jedem korrigierten Fehler neukompilieren, da es normalerweise zu sehr vielen Folgefehlern kommt.
Doppelte Deklaration
bruja shabanov 11 (Desktop/JavaKurs): javac Errors.java Errors.java:5: i is already defined in main(java.lang.String[]) for( int i = 0 ; i < 10 ; i++ ){ ^ 1 error
- Die Variable i ist irgendwo bereits definiert gewesen. Sucht also vor dieser Zeile nach einem:
int i = ..
- Ihr müsst dann den Variablennamen in der Schleife z.B. ändern.
Definition fehlt
bruja shabanov 5 (Desktop/JavaKurs): javac Errors.java Errors.java:15: variable ret might not have been initialized return ret; ^ 1 error
- Ihr habt eine Variable nicht richtig initialisiert, das passiert oft wenn ihr einer Variable innerhalb einer if-Anweisung Werte zuweist, wie in diesem Code ( der zudem obigen Fehler führt ):
public static String someMethod( int x ){ String ret; if( x == 4711 ){ ret = "foobar"; } return ret; }
- Die Variable ret bekommt nur dann einen Wert zugeordnet wenn x == 4711 gilt, da dies nicht immer der Fall sein muss, könnte der Fall auftreten, dass ret gar keinen Wert zugeordnet bekommt.
- Fügt einen default Wert für ret hinzu um diesen Fehler zu beheben, z.B. so:
String ret = "";
Missing return statement
bruja shabanov 6 (Desktop/JavaKurs): javac Errors.java Errors.java:17: missing return statement } ^ 1 error
- Ihr habt in einer Methode, die etwas zurückgeben soll entweder das return vergessen, oder das return steht nur innerhalb von if Anweisungen, wie hier:
public static boolean isPositive( int num ){ if( num > 0 ){ return true; }else if( num < 0 ){ return false; } }
- Da alle returns in einem if Block stehen, könnte es theoretisch sein, dass keiner der Blöcke ausgeführt wird und Java somit nicht weiss was es zurück geben soll.
- Fügt um das Problem zu Lösen ein return am Ende euerer Mthode ein, oder ändert ein else if in ein else.
public static boolean isPositive( int num ){ if( num > 0 ){ return true; }else if( num < 0 ){ return false; } return false; }
LaufzeitFehler
java.lang.NoClassDefFoundError
bruja shabanov 7 (Desktop/JavaKurs): java Errors Exception in thread "main" java.lang.NoClassDefFoundError: Errors
- Heisst Java kann die Klasse nicht finden, die ihr ausführen wollt.
- Schaut genau nach ob der Dateiname und der Klassennamme gleich sind. Dabei ist auch wichtig die Groß/Klein Schreibung zu beachten. Ausserdem achtet darauf ob ihr in die Konsole die richtigen Namen eingetippt habt.
java.lang.NoSuchMethodError
bruja shabanov 9 (Desktop/JavaKurs): java Errors Exception in thread "main" java.lang.NoSuchMethodError: main
- Java findet eine Methode nicht ( hier speziell die main Methode )
- Schaut ob ihr beim Aufruf den Methodennamen richtig geschrieben habt.
java.lang.ArrayIndexOutOfBoundsException
bruja shabanov 8 (Desktop/JavaKurs): java Errors Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 at Errors.main(Errors.java:5)
- Ihr versucht auf ein Array Feld zuzugreifen, was ausserhalb der Größe des Arrays liegt.
- Sucht in der angegeben Zeile nach dem Zugriff auf das Array und erweitert notfalls die Größe des Arrays.
java.lang.NullPointerException
bruja shabanov 13 (Desktop/JavaKurs): java Errors Exception in thread "main" java.lang.NullPointerException at Errors.main(Errors.java:5)
- Ihr versucht auf eine Variable zuzugreifen oder führt mit ihr Operationen aus, obwohl sie noch nicht initialisiert ist.
- Das passiert oft wenn man mit z.B. String Arrays arbeitet. Obwohl man das Array initialisiert sind die Elemente darin noch nicht initialisiert.
String[] stringArray = new String[12];
- Hier kann es helfen, den Array Elementen entweder direkt Werte zuzuweisen oder mit einer Schleife alle auf einen default Wert setzen:
for(int i = 0 ; i < stringArray.length ; i++ ){ stringArray[i] = ""; }
java.lang.ArithmeticException
bruja shabanov 15 (Desktop/JavaKurs): java Errors Exception in thread "main" java.lang.ArithmeticException: / by zero at Errors.main(Errors.java:4)
- Dieser Fehler tritt auf, wenn ihr versucht ungültige arithmetische Operationen auszuführen, wie hier die Division durch 0.
- Ihr könnt euch Gedanken über das axiomatische Gerüst der Mathematik machen und nach einem Weg suchen durch 0 zu teilen, einfach ist es jedoch wenn ihr einfach nicht durch 0 teilt, keine Wurzeln aus negativen Zahlen zieht usw.