Fehlermeldung reagieren

JensMander

Bekanntes Mitglied
Hallo Forum,
ich starte über eine GUI eine Funktion.
Java:
 public void actionPerformed(ActionEvent e)
          {
                new Thread (new Runnable()
                {
                      @Override
                      public void run()
                      {
                           btnStart.setText("");
                           textArea.append("gestartet\n");
                           btnStart.setEnabled(false);
                           new AS.simulationsstart(textArea,progressBar,treemodel);
                           SwingUtilities.invokeLater(new Runnable()
                           {
                                 @Override
                                 public void run()
                                 {
                                       textArea.append("beendet\n");
                                       progressBar.setValue(progressBar.getMaximum());
                                       btnStart.setIcon(null);
                                       btnStart.setText("Start");
                                       btnStart.setEnabled(true);
                                 }
                           });
                      }
                }).start();
               
          }


Nun kann es ja passieren, das in meinem Code ein Fehler auftritt, nur dann bricht der Code ab und das war es. Kann ich dann irgendwie darauf reagieren. So das ich das ich die Methode neu starten kann, weil beispielsweise die Inputparameter erneuert wurden?
mfg
Jens
 
Den Fehler kenne ich nicht genau, denn es gibt mehrere Fehler, die ich nicht vorhersehen kann (die Funktion ruft eine Datei auf und bearbeitet diese, die Datei kenne ich nicht).
Ich hätte gerne eine reaktion auf alle Fehler:

also

Java:
try
{
funktion(x,y,z);
}
catch()
{
System.out.print("Funktion konnte nicht ausgeführt werden")
}
 
Java:
catch(Throwable t)

Throwable ist das Interface welches JEDE Exception implementieren MUSS um zu throwen können.
 
Okay, das ist schonmal super, ich habe nun (auch wenn es wahrscheinlich eher unsauber programmiert ist) innerhalb meiner funktion(x,y,z) schon try und catch Böcke angewandt, wenn von diesen Blöcken nun einer anspringt, reagiert, dann trotzdem der catch(throwable t)?
mfg
Jens
 
Okay, das ist schonmal super, ich habe nun (auch wenn es wahrscheinlich eher unsauber programmiert ist) innerhalb meiner funktion(x,y,z) schon try und catch Böcke angewandt, wenn von diesen Blöcken nun einer anspringt, reagiert, dann trotzdem der catch(throwable t)?
mfg
Jens
Catch bedeutet soviel wie "Abfangen". Wenn der Catch-Block INNERHALB deiner Funktion nun also die Fehlermeldung "Abfängt" dann passiert da auch sonst nichts mehr mit. Sie wird nur weiter geschmissen solange sie kein catch anfangen kann/will.
 
Okay, das verstehe ich eventuell noch nicht ganz richtig.


Meine Funktion:
Java:
try
{
funktion(x,y,z)
}
catch(throwable t)
{
System.out.println("Funktion gescheitert")
}

Wenn meine Funktion nun so ausschaut:
Java:
public funktion(x,y,z)
{
try
{
System.out.println("Huhu");
}
catch(Fehler e)
{
System.out.println("Huhu missglückt");
}

Das heisst, wenn jetzt das Huhu nicht ausgegeben werden konnte(auch wenn es unwahrscheinlich ist), dann wird lediglich "Huhu missglückt" ausgegeben und nicht noch zusätzlich "Funktion gescheitert"??
mfg
Jens
 
Nö, denn die Klasse "Fehler" gibt es nicht. Genausowenig wie die Klasse "throwable". Du musst auf Groß- /Kleinschreibung achten.
 
Jo Throwable natürlich groß und Fehler ist natürlich Exception. Es ging mir lediglich ums Prinzip. Der Code ist ja nur ein Beispiel*G*.
vielen Dank die Tipps sind wirklich Hilfreich!!!!Tausend Dank
 
Also FALS es eine Klasse Fehler mit extends Exception oder implements Throwable existiert, und das Sysout nun genau diesen throwen würde (throw new Fehler()😉 dann würde die Exception INNERHALB der Funktion diese Exception behandeln und außerhalb bekommt man davon nichts mit. Jede andere Exception (welche NICHT von "Fehler" ableitet) würde nicht durch die catch innerhalb der Funktion abgefangen werden und weiter durchrasseln bis sie irgendwo behandelt wird oder eben das Programm (der Thread) abstürzt.
 

Zurück
Oben