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:
Code:
float x, y;
if(x!=0) {
y=1/x;
Serial.print(y);
}
else {
Serial.print("ERROR! x=0 => NAN! Ungültiger Wertebereich!");
}
Genauso musst du deine x-Werte beim acos vorher prüfen und eingrenzen.
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
Lesezeichen