VB.net Fehlerbehandlung mit Exceptions

Gast #2121045
Lesenswert?

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ß
Angehängte Dateien:
Gast #2123234
Lesenswert?

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.
Gast #2123391
Lesenswert?

... 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"

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren