math exceptions abfangen (sqrt usw.)
-
ich bin ein alter clipper-programmierer und haben mir so ein paar dinge zunutze gemacht, die leider unter c++ nicht mehr möglich sind.
unter clipper ist es so: wenn aus einer negativen zahl die wurzel gezogen werden soll, wird als ergebniss 0 zurückgeliefert.
nun wäre es gut diese möglichkeit auch unter c++ zu realisieren. jedoch habe ich noch wenig erfahrung mit c++, um die exception abzufangen (sofern möglich).
eine vorhergende prüfung ist sehr umständlich, da ich eine mathematisches programm erstelle, welches unmengen an wurzeln zieht.
kann mir jemand helfen ?
mario
[ Dieser Beitrag wurde am 16.09.2002 um 16:44 Uhr von Jansen editiert. ]
-
mh, eine exception abzufangen ist eigentlich nicht schwer:
try { x = sqrt(y); } catch(DEINE_WURZEL_EXECPTION) //bei "..." werden alle exceptions abgefangen { x = 0; }
-
e_gross= 3 * (tf_1/zw1) * (0.8*(beton_1/10) / pu_fybk); try { pu_1=1.3 * (sqrt(1-1.69*pow(e_gross,2)) - 1.3*e_gross) * pow(zw1,2) * sqrt(0.8*beton_1/10*pu_fybk); } catch ( ... ) { pu_1=0; }
es kommt leider nach wie vor eine exception "sqrt: domain error","ungültige gleitkommaoperation"
was ist daran falsch?
-
Hallo
Es ist doch falsch, da man numerische Exceptions nicht mit try catch abfangen kann. Dafür muß man einen Errorhandler einrichten. Am besten ist es mal in der Hilfe unter _matherr nachzuschauen. Da wird alles erläutert.
Das ist vielleicht auch etwas für die FAQ.Ciao
-