Wizard schluck Exceptions

blubs004

Grünschnabel
hallo,

ich entwickel eine rcp-anwendung und bin gerade dabei einen wizard zu schreiben. dabei ist mir aufgefallen, das der wizard exceptions zu schlucken scheint. ich hatte schon zwei mal null-pointer-fehler. diese wurden jedoch nicht als exception ausgegeben. statt dessen funktioniert der wizard oder die betreffende wizardpage dann einfach nicht. das macht die fehlersuche sehr nervig, weil man erst einmal überhaupt keinen ansatz hat, wo der fehler liegt und umständlich suchen muss, um den fehler "einzukreisen" und zu finden.

kennt jemand dieses problem und weiß vielleicht wie man es umgehen/abschalten kann?

danke schon mal
 
Hallo,

erstmal bitte ich dich ein wenig deine Shift-Taste zu strapazieren und auf Groß- und Kleinschreibung zu achten.

Ich denke nicht, dass der Wizard Exceptions schluckt, sondern dass vielleicht nur keine Exception aufgetreten ist. Wäre es möglich, dass du etwas Quellcode postest?

MFG

Sascha
 
Sorry, ist so eine Angewohnheit von mir, dass ich alles klein schreibe.

Quell-Code posten ist ein bisschen schwierig, da der Wizard schon sehr umfangreich ist. Aber eine Fehlermeldung hätte auf jeden Fall auftreten müssen, da ich in einem Fall auf Methoden eines Objektes zugegriffen habe, das jedoch null war.
Vielleicht hilft der kleine Ausschnitt:

In einer WizardPage habe ich eine Liste angelegt und mit Werten gefüllt.
Code:
public class MyWizardPage extends WizardPage {
  ...
  @Override
  public void createControl(Composite parent) {
    ...
    List myList = new List(parent, SWT.SINGLE | SWT.V_SCROLL | SWT.BORDER);
    myList.setItems(((MyWizard) getWizard()).getItems("myFiles"));
    ....
  }
  ...
}

Die Methode getItems() in der Wizard-Klasse:
Code:
public class MyWizard extends Wizard {
  ...
      
  public String[] getItems(String name) {
    List aList = aHashMap.get(name);
              
    String[] items = new String[aList.size()];

    for(Iterator i = aList.iterator(); i.hasNext();){
      //do something
    }
    return items;
  }
  ...
}

Ich hatte nun den Fehler, dass aList 'null' war, weil ich zuvor die HashMap falsch gefüllt hatte. Also hätte bei der Anweisung aList.size() eine NullPointerException kommen müssen. Dem war aber nicht so. Statt dessen lies sich die entsprechende WizardPage nicht durch "next" aufrufen. Der Wizard blieb dann einfach auf der aktuellen Seite. (Dazu angemerkt: ich füge nicht alle WizardPages in der add-Methode des Wizards hinzu (nur die erste), sondern steuere die Abfolge der einzelnen Seiten dynamisch, indem ich 'getNextPage' in den einzelnen WizardPages überschreibe.)

Ich hatte auch noch einen anderen Fall, in dem eine NullPointerException hätte auftreten müssen, aber statt dessen nur der Wizard nicht ging. Diesen Fall konnte ich in einem anderen Plugin der RCP-Anwendung nachstellen (Verwendung einer Util-Klasse, die zwar angelegt, aber noch nicht "gefüllt" (also 'null') war). In dem anderen Plugin trat die NullPointerException auf, jedoch nicht im Wizard...
 
Zuletzt bearbeitet:
Guten morgen,

ich würde auf jeden Fall versuchen die betroffenen Stellen mit einem try-catch-Konstrukt zu kapseln, wobei dann im "catch"-Teil ja das Exception-Handling stattfinden kann!
Das sie "verschluckt" werden glaube ich auch ehr weniger ...

tschüss
Klaus
 
ich weiss nicht, ob das Dein Problem ist, aber manchmal treten seltsame Effekte auf, wenn Du nicht Threadsafe arbeitest.

Ab Eclipse 3.3 ist das besonders auffällig. Eine Action muss nicht zwangsläufig in selben Thread laufen, wie der View. Deshalb helfen asyncExcec oder synchExec oft weiter....

Grüße
 
Zurück