try,catch: division by zero
-
Hallo zusammen, wie fange ich eine Division durch null zur Laufzeit meines Code ab. Exemplarisch dazu habe ich schonmal einen Beispielcode geschrieben. Vielen Dank, Euer Kevin
// ACHTUNG C-CODE FÜR EMBEDDED TARGET #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int oben=10; int unten=0; int ergebnis; // Kritischer Abschnitt // Lösungsansatz durch try, catch gesucht ergebnis=oben/unten; // Kritischer Abschnitt zu Ende // if Exception wurde ausgelösst: printf("Doofkop"); system("PAUSE"); return 0; }
-
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int oben=10; int unten=0; int ergebnis=0; /* Möglichkeit 1*/ if (unten == 0) perror("Doofkop"); else ergebnis=oben/unten; /* Möglichkeit 2*/ assert(unten != 0); ergebnis = oben / unten; return 0; }
Das wäre das C-style try-catch
-
Zwar kein ANSI C, sondern MS Gebastel, aber eventuell könnte sowas gehen:
__try { ergebnis = oben/unten; } __except(1) { printf("FEHLER\n"); }
-
CStoll schrieb:
Zwar kein ANSI C, sondern MS Gebastel, aber eventuell könnte sowas gehen:
__try { ergebnis = oben/unten; } __except(1) { printf("FEHLER\n"); }
so geht das auch...
:xmas2:
-
Vielen Dank für die vielen Zuschriften. Es habdelt sich mal wieder um ein embedded target das nur C-Code ausführen kann. Da alle Variablen zur Laufzeit berechnet werden komme ich um eine Vorauswertung des Nenners nicht rum oder????
-
lovepulse schrieb:
Vielen Dank für die vielen Zuschriften. Es habdelt sich mal wieder um ein embedded target das nur C-Code ausführen kann. Da alle Variablen zur Laufzeit berechnet werden komme ich um eine Vorauswertung des Nenners nicht rum oder????
vielleicht doch?
viele MCU's generieren einen interrupt, wenn sowas wie division durch 0 passiert. musste in die doku gucken wie das geht und einen 'exception handler' dafür coden...