Hallo zusammen, beim Testen von Exceptions komme ich nicht weiter. Das Programm rechnet mit den Eingabewerten von 0,0 für spannung und leistung und bringt in leistung den Wert -1,#IND . Was erst mal richtig ist. Dieser Wert wird auf lblP1 ausgegeben. Das dürfte aber nicht sein, das Programm müsste zu Catch ex As OverflowException verzweigen. lblP1.Text = "Error" Was mache ich falsch? Schönen Gruß
Schimmelreiter schrieb: > Das dürfte aber nicht sein Wieso nicht? Wo steht, dass das nicht sein darf? Bei FP Zahlen kann man sehr wohl diese Ergebisse erhalten und auch eingeschränkt mit ihnen weiterrechen.
Läubi .. schrieb: > Wo steht, dass das nicht sein darf? Wenn ich eine Division durch Null simuliere, dann muss doch in Catch verzweigt werden, oder? Alle Beispielschnipsel die man so findet(Bücher, Internet) behaupten das jedenfalls ;)
Schimmelreiter schrieb: > Wenn ich eine Division durch Null simuliere, dann muss doch in Catch > verzweigt werden, oder? kann durchaus sein, aber eine Division durch 0 wirft bestimmt eine ander exception als OverflowException
Peter II schrieb: > bestimmt eine ander exception als OverflowException Ja, richtig, es ist 'Catch ex As DivideByZeroException' Aber selbst diese funktioniert nicht.
Schau mal hier: http://msdn.microsoft.com/en-us/library/25bswc76.aspx Insbesondere unter "Attempted Division by Zero" Geht wohl nur für den Datentyp Decimal. Außerdem wind meines Wissens die FP-Exceptions normalerweise ausgeschaltet. Keine Ahnung, wie man die bei VB einschaltet. Für C/C++ gehts so: http://msdn.microsoft.com/en-us/library/c9676k6h%28VS.100%29.aspx http://msdn.microsoft.com/en-us/library/45ec64h6.aspx PS: http://msdn.microsoft.com/en-us/library/system.dividebyzeroexception.aspx Unter "Remarks":
1 | Dividing a floating-point value by zero will result in either positive |
2 | infinity, negative infinity, or Not-a-Number (NaN) according to the |
3 | rules of IEEE 754 arithmetic. Floating-point operations never throw |
4 | an exception. For more information, see Single and Double. |
... schrieb: > Schau mal hier: Ja, besten Dank für deine Erklärung! Nachdem ich drei Tage die Lösung des Problems im Internet gesucht habe, finde ich bei mir im Regal das Buch: "Visual Basic 2008, Einstieg für Anspruchsvolle" von Jürgen Kotz, Verlag Addison-Wesley, ISBN 978-3-8279-2595-2. Auf Seite 83(Werfen einer Ausnahme) finde ich eine Erklärung: Selbst wenn in der Textbox "0" steht so wird bei Fließkommazahlen mit einer Annäherung nach Null gerechnet, was zum Ergebniss +unendlich oder -unendlich führt. Bei Integer Divisionen ist hingegen die Textbox-Null auch eine mathematische Null. Als Lösung schlägt der Autor folgendes vor: If txtNenner.Text = "0" Then Throw New DivideByZeroException() End If Mit dem Schlüsselwort Throw wird hier eine eigene Ausnahme ausgelöst. Ob das so funktioniert hab ich nicht ausprobiert da ich schon eine 'Heimlehrgangsprogrammiererlösung' ;) geschrieben habe: If txtStrom.Text = "0" Then lblStrom.Text = "Error"
Schimmelreiter schrieb: > da ich schon eine > 'Heimlehrgangsprogrammiererlösung' ;) geschrieben habe Und wenn du jetzt den Benutzer mit einer etwas diffizileren Meldung als "Error" beglückst hat er möglicherweise auch die Chance etwas dagegen zu unternehmen...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.