Exceptions in doppelt verketteter Liste

  • Themenstarter Themenstarter daniel88
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
D

daniel88

Gast
Hi Leute
Ich möchte in einer doppelt verketten Liste Fehler professionell werfen und fangen.
Nun habe ich leider gar keine Ahnung von Exceptions.
Vielleicht könnte mir einer mal eine kurze Anleitung oder Beispiel geben, wie und wo ich Exceptions
in meinem Programm professionell werfe und fange.
Schon mal vielen Dank im Voraus

Code:
public class Liste{

private Element kopf, aktuell;

    public Liste() {
        this.aktuell = null;
        this.kopf = null;
    }

    public void insertFirst(Object x) {
        this.kopf = new Element(x, null);
        this.aktuell = this.kopf;
    }

    public void insertAfter(Object x) {
    Element neu = new Element (x, null);
    neu.setNachfolger(this.aktuell.getNachfolger());
    this.aktuell.setNachfolger(neu);
    this.aktuell=neu;
    }

    public void insertBefore(Object x) {
    Object hilf = this.aktuell.getInhalt();
    this.update(x);
    Element neu = this.aktuell;
    this.insertAfter(hilf);
    this.aktuell = neu;
  }

    public void update (Object x) {
    this.aktuell.setInhalt(x);
    }

    public void delete() {
    Element aktStelle = aktuell;
    if (aktStelle==this.kopf)
    {
     this.kopf=aktStelle.getNachfolger();
    }
    else
    {
      this.reset();
      while (!(this.aktuell.getNachfolger()==aktStelle))
      {
       this.next();
      }
      this.aktuell.setNachfolger(aktStelle.getNachfolger());
    }
    this.reset();
    }

    public boolean isEmpty() {
    return this.kopf == null;
    }

    public Object show() {
    return this.aktuell.getInhalt();
    }

    public void reset() {
    this.aktuell=this.kopf;
    }

    public boolean last() {
    return this.aktuell.getNachfolger() == null;
    }

    public void next() {
    this.aktuell = this.aktuell.getNachfolger();
    }

}
 
Fangen musst du IMHO nichts, schliesslich gibt es keinen kritschen Code den die Liste selbst aufrufen würde.

Aber werfen kannst du an verschiedenen Stellen. Zum Beispiel bei "next":
Code:
public void next(){
  if( aktuell == null || aktuell.getNachfolger() == null )
    throw new IllegalStateException( "Da gibts nichts nächstes" );
  aktuell = aktuell.getNachfolger();
}

Natürlich könntest du auch deine eigene Exception einführen. Einfach eine neue Klasse machen, und von "RuntimeException" erben.
 
Ok
ersteimal vielen Dank. War das denn schon alles mit den Exceptions?
muss man nicht noch eine Funktion try erstellen die Exception testet?
 
Müssen: nicht unbedingt, nur wenn du eine erwartest (oder es keine RuntimeException ist). Wenn du weisst [*], dass dein Code richtig ist, musst du auch nichts abfangen, und gerade bei Listen weiss man das normalerweise.

Wenn du aber unbedingt willst, kann derjenige, der die Liste benutzt, ein paar try-catch Blöcke machen.


[*] "wissen", und nicht "glauben" :wink:
 
denn wenn man z.B. mit der Java-Klasse ArrayList arbeitet,
will niemand bei jeder Operation try/ catch schreiben,

bei Übergabe eines falschen Indexes gibts dennoch ne RuntimeExeption
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben