die Fehler muss man normalerweise vorher abfangen, indem man die Werte außerhalb der Definitionsbereiche der Funktion vorher ausschließt.
z.B. bei
Code:float x, y; y=1/x; Serial.print(y);
muss es mathematisch und programmier-logisch richtig heißen:
Genauso musst du deine x-Werte beim acos vorher prüfen und eingrenzen.Code:float x, y; if(x!=0) { y=1/x; Serial.print(y); } else { Serial.print("ERROR! x=0 => NAN! Ungültiger Wertebereich!"); }
Andere Programmiersprachen benutzen dafür eine Konstruktion wie
try / catch / throw exception
etc., die genau solche Fehler durch interne Routinen abfangen.
In C geht das nicht, in C++ aber doch, ist aber nicht meine Baustelle.
try catch throw exception C++:
http://www.cplusplus.com/doc/tutorial/exceptions/
http://www.tutorialspoint.com/cplusp...s_handling.htm







Zitieren

Lesezeichen