Hallo!
Ich möchte das erste Mal eine eigene Exception nutzen. Dazu habe ich eine MyException Klasse und eine Unterklasse ArrayFullException.
Leider bekomme ich das nicht so recht hin und weiß mittlerweile nicht, wo das Problem liegt.
Die Idee ist: Ich erstelle ein Array aus der ArrayStack Klasse. Packe in der Main Klasse Items in das Array und wenn das Array voll ist und keine Items mehr rein können, soll meine Exception ausgelöst werden.
Ohne meine Exception geht das Programm.
Mit meiner Exception gibt er mir IMMER die Fehlermeldung meiner Exception aus, obwohl das Array nicht voll ist.
Hier der Code:
Ich möchte das erste Mal eine eigene Exception nutzen. Dazu habe ich eine MyException Klasse und eine Unterklasse ArrayFullException.
Leider bekomme ich das nicht so recht hin und weiß mittlerweile nicht, wo das Problem liegt.
Die Idee ist: Ich erstelle ein Array aus der ArrayStack Klasse. Packe in der Main Klasse Items in das Array und wenn das Array voll ist und keine Items mehr rein können, soll meine Exception ausgelöst werden.
Ohne meine Exception geht das Programm.
Mit meiner Exception gibt er mir IMMER die Fehlermeldung meiner Exception aus, obwohl das Array nicht voll ist.
Hier der Code:
Meine Main Klasse, wo in den Stack die Items gelegt werden.
Java:
[/B]
public class Main {
public static void main(String[] args) {
Stack<String> TestStack = new ArrayStack<String>();
String erster = "Hallo";
String zweiter = "Test";
String dritter = "!";
try {
TestStack.push(erster);
TestStack.push(zweiter);
TestStack.push(dritter);
} catch (ArrayFullException e) {
System.err.println(e.getErrorMessage());
}
}
}
[B]
Meine ArrayStack Klasse. Hier soll das Array erstellt werden.
Wenn ich den auskommentierten Teil nutze und nicht meinen neuen Versuch mit einer eigenen Exception, geht alles.
Wenn ich den auskommentierten Teil nutze und nicht meinen neuen Versuch mit einer eigenen Exception, geht alles.
Java:
[/B]
import java.util.Arrays;
public class ArrayStack<T> implements Stack<T> {
private int maxSize = 10;
private T[] data;
private int size = -1;
@SuppressWarnings("unchecked")
public ArrayStack () {
this.data = (T[])(new Object[maxSize]);
}
public void push(T item) throws ArrayFullException {
// try {
// ++size;
// data[size] = item;
// } catch (ArrayIndexOutOfBoundsException e) { //Array voll
// System.out.println();
//
// System.out.println("Das Array ist voll. Das Element '" + item + "' konnte nicht hinzugefuegt werden. "
// + "Die maximale Größe das Arrays ist: " + maxSize);
//
// System.out.println("Gerade sind folgende Elemente im Array enthalten: " + Arrays.toString(data));
// System.out.println();
// --size;
// }
if(size < maxSize) {
++size;
data[size] = item;
} throw new ArrayFullException();
}
//toString, geter, seter
@Override
public String toString() {
return "ArrayStack [maxSize=" + maxSize + ", data=" + Arrays.toString(data) + ", size=" + size + "]";
}
public int getMaxSize() {
return maxSize;
}
public void setMaxSize(int maxSize) {
this.maxSize = maxSize;
}
public T[] getData() {
return data;
}
public void setData(T[] data) {
this.data = data;
}
}
Hier die MyException Klasse
Java:
@SuppressWarnings("serial")
public abstract class MyException extends Exception {
private String errorMessage;
public MyException() {
this.setErrorMessage("Fehler: ");
}
public MyException(String m) {
setErrorMessage(m);
}
public String getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
Meine Unterklasse.
Java:
[/B]
@SuppressWarnings("serial")
public class ArrayFullException extends MyException {
public ArrayFullException() {
super("ArrayStack ist voll.");
}
}
[B]
Mein Interface.
Java:
[/B]
public interface Stack<T> {
public void push(T item) throws ArrayFullException;
}
[B][B]
Zuletzt bearbeitet: