Avatar billede stev Nybegynder
23. maj 2005 - 19:25 Der er 4 kommentarer og
1 løsning

Undtagelseshåndtering

Hej,

Jeg har lavet et program(I C#), som beregner hvor mange dage der er imellem 2 indtastede datoer. Jeg ville så gerne have lavet en undtagelseshåndtering, der smed nogle mere forståelige fejlbeskeder ud til brugeren. De to Exceptions, som der er chance for at få er 'ArgumentOutOfRangeException' og 'FormatException'.

Jeg har derfor lavet en Try, Catch løkke:
-----------------------
try
{
  DateTime Dato1 = new DateTime(iYear1,iMonth1,iDay1);
  DateTime Dato2 = new DateTime(iYear2,iMonth2,iDay2);
                 
  if (Dato1 < Dato2)
  {
      DateTime TmpDato1 = Dato2;
      DateTime TmpDato2 = Dato1;
      Dato1 = TmpDato1;
      Dato2 = TmpDato2;
  }
               
  TimeSpan Forskel = Dato1 - Dato2;
           
               
  int DageMellemDatoer = Forskel.Days;
               
  lResultat.Text = "Dage mellem de to datoer:  ";
  lResultat.Text += DageMellemDatoer;
}
catch(FormatException)
{
  MessageBox.Show("Datoerne skal skrives som tal");
}
catch(ArgumentOutOfRangeException)
{
  MessageBox.Show("En eller flere af datoerne er ikke korrekt(e)");
               
}
-------------------------------------

Ovenstående fungerer fint når jeg laver en 'ArgumentOutOfRangeException', men smider "standard" fejlbeskeden ud på 'FormatException'

Nogen der har en idé om hvorfor det sker og hvordan det kan løses?

EDIT:
Jeg mener at kunne huske fra min C# bog, at når man havde mere end et Catch Statement, så skulle man sørge for at de var i rigtig rækkefølge, pga. et eller andet hieraki(<-- Eller hvordan det nu staves:))
Avatar billede arne_v Ekspert
23. maj 2005 - 19:28 #1
er dit Parse kald inden for try catch blokken ?
Avatar billede stev Nybegynder
23. maj 2005 - 19:33 #2
Hrm, Parse kald?

Ved ikke lige hvad det er:)
Avatar billede arne_v Ekspert
23. maj 2005 - 19:36 #3
der hvor du konverterer det indtastede fra string til int (eller DateTime)
Avatar billede stev Nybegynder
23. maj 2005 - 19:39 #4
Ahaaa, du havde ret, den lå uden for Try Catch.

Det havde jeg overset, min fejl:)

Lav et svar, så får du point
Avatar billede arne_v Ekspert
23. maj 2005 - 19:42 #5
kommer her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester