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



  • @Braunstein

    vielen dank, du hast mir wirklich sehr geholfen.

    ciao


Anmelden zum Antworten