c# if abfrage mit try und catch

abdi-61

Lieutenant
Registriert
Okt. 2011
Beiträge
519
Hi,

ich soll den folgenden Code mit try und catch realisieren doch ich hab keine Ahnung wie ich das machen soll
Code:
 if (Wert > 6)
                {
                    MessageBox.Show("Die eingegebene Zahl ist zu hoch");
                    Environment.Exit(0);
                }
                else if (Wert < 1)
                {
                    MessageBox.Show("Die eingegebene Zahl ist zu niedrig");
                }

kann mir einer helfen ?
danke
 
Naja die Bereichsabfrage wirst schon irgendwie beibehalten müssen

Code:
void doSomething(int param)
{
  if (param > 6 || param < 1)
  {
     throw new ArgumentException("Message"); //oder eigene Exception, evtl. auch eine Exception für zu hohen und eine für zu niedrigen Wert, oder StatusCode, je nachdem wie es sinnig ist.
  }

  ...
}

und dann in ner anderen Methode:

Code:
try
{
  doSomething(8);
}
catch (Exception e)
{
  //Fehlerbehandlung
}
 
Zuletzt bearbeitet:
Ich hätte noch ne Variante mit while:
Code:
while(wert>6) { 
    MessageBox.Show("Die eingegebene Zahl ist zu hoch");
    exit();
}
while(wert<1) { 
    MessageBox.Show("Die eingegebene Zahl ist zu niedrig");
    exit();
}
...

​Aber bist du dir sicher, wirklich mit try und catch?
 
Ja also ich würd auch lieber mit if arbeiten aber mein lehrer meint wir sollen es mit try und catch machen was ich nun nicht verstehe was ich bei catch dann hin schreiben soll

Code:
 try
                {
                    if (Wert < 1 || Wert > 6)
                    {
                        throw new Exception("Die Zahl ist ungültig");
                    }
                   
                }
                catch (Exception ex)
                {
                    MessageBox.Show(" " + );                       
                }



edit ok ich habs selbst herausgefunden:
doch bei der message box kommt "Die Zahl ist üngültig " bei ............ und dan werden irgendwelche pfade genannt.
kann man das so einstellen das nur die meldung kommt ?
 
Zuletzt bearbeitet:
Worum geht es im Allgemeinen bei dem Programm? Ich kann mir nicht vorstellen, das er euch nur den kleinen Schnipsel gegeben hat und ihr ihn umschreiben sollt.
 
Ich verstehe es auch nicht ganz, warum man soetwas mit try/catch realisieren soll. Aber naja...Lehrer :D

Schreib einfach MessageBox.Show(e.Message);
 
Jo. In ner richtigen Applikation würde ich den vollen Text aber zumindest mitloggen. Zumindest im Block, der die Exception Klasse abfängt, was bis dahin durchschlägt kann ja alles gewesen sein.
 
ok danke euch ,ja ist nen tic tac to programm will aber jetzt nicht den ganzen code hier rein schreiben dann währe die übersicht dahin :)
 
Strukturierte Fehlerbehandlung zu verstehen ist schon wichtig. Man wirft auch keine Exception vom Typ Exception, sondern leitet in der Regel eine eigene Exception von der Klasse ab. Oder nimmt eine der abgeleiteten Klassen, wenn sie passt, so dass man auf spezielle Fehler auch speziell reagieren kann und auf allgemeine nicht. So z.B., wenn ZahlZuGrossOderKleinException von ArgumentException abgeleitet ist:

Code:
    try
    {
    doSomething(8);
    }
    catch (ZahlZuGrossOderKleinException e)
    {
       //Fehlerbehandlung, wenn Zahl zu groß oder kleine
    }
    catch (ArgumentException e)
    {
       //Fehlerbehandlung, wenn anderer Parameterfehler aufgetreten ist
    }
    catch (Exception e)
    {
       //Fehlerbehandlung, für sonstige Fehler, z.B. Loggen und Programmbeendigung, wenn Software in nem Zustand ist, der nicht mehr definiert ist
    }
    finally
    {
       //Aufräumarbeiten, die immer ausgeführt werden sollen, z.B. abschließender Eintrag in Log-Datei, Datenbankverbindung beenden
    }

So trennt sich Fehlercode besser vom Programcode, aber der Sinn hat sich mir auch erst in größeren Projekten erschloßen, bei kleinen Übungsaufgaben war mir das auch nie so schlüssig, warum. :)
 
Zurück
Oben