30. april 2006 - 16:48Der er
13 kommentarer og 2 løsninger
try/catch problemer
Hejsa
Jeg har en try/catch funktion på en regnemaskine. Skriver jeg eksempelvis Et (istedet for 1) i min tekstboks - fanger den generelle catch Exception den godt nok og kommer ud med min egen tekst "Du har lavet en fejl, som jeg ikke...".
Forsøger jeg at dividere med 0, vil jeg gerne fange den med catch (DivideByZeroException err). Men istedet for at komme ud med en MessageBox - skriver den bare "INF" i lblResultat.Text (min label, hvor resultatet skulle komme til at stå).
else { lblResultat.Text = "Du har ikke indtastet nogen \noperator"; } } catch (DivideByZeroException err) { runFinally = true; MessageBox.Show(err + "\n\nDu har forsøgt at dividere med 0"); } catch (Exception err) { runFinally = true; MessageBox.Show(err + "\n\nDu har lavet en fejl, som jeg ikke aner hvad er, og du nok heller ikke"); } finally { if (runFinally == true) { txtTalEt.Text = ""; txtTalTo.Text = ""; lblFunktion.Text = ""; } }
sæt et breakpoint på denne linie: bool runFinally = true; (du kan gøre det ved at stille dig på linien og trykke på F9). så trykker du F5 for at køre med debugger, og eksekveringen stopper så på den linie. du kan så steppe med F10/F11 så du kan se hvordan programmet eksekverer, og du kan inspicere variable etc. mvh
hvis du læser docs på DivideByZeroException ser du:
Dividing a floating-point value by zero will result in either positive infinity, negative infinity, or Not-a-Number (NaN) according to the rules of IEEE 754 arithmetic. Floating-point operations never throw an exception. For more information, see Single and Double.
Tak skal du have - har lagt en if mere ind, der spørger om der står "INF" i lblResultat.Text, hvor jeg så laver MessageBox.
Den er din denne gang - smid et svar og det er dine points.
snepnet Jeg laver lige et spørgsmål, angående debugging - vil gerne give dig lidt points for at guide mig igennem dette. Det er bestemt noget, jeg får meget brug for.
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.