Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

C - Fehlerbehandlung

Daher bietet die C-Programmierung keine direkte Unterstützung für die Fehlerbehandlung, sondern bietet Ihnen als Systemprogrammiersprache Zugriff auf niedrigerer Ebene in Form von Rückgabewerten. Die meisten C- oder sogar Unix-Funktionsaufrufe geben im Fehlerfall -1 oder NULL zurück und setzen einen Fehlercode errno . Sie wird als globale Variable gesetzt und zeigt einen Fehler an, der während eines beliebigen Funktionsaufrufs aufgetreten ist. Sie können verschiedene Fehlercodes finden, die in der Header-Datei definiert sind.

Ein C-Programmierer kann also die zurückgegebenen Werte überprüfen und abhängig vom Rückgabewert geeignete Maßnahmen ergreifen. Es hat sich bewährt, errno beim Initialisieren eines Programms auf 0 zu setzen. Ein Wert von 0 zeigt an, dass das Programm keinen Fehler enthält.

Fehler, Fehler(). und strerror()

Die Programmiersprache C stellt perror() bereit und strerror() Funktionen, die verwendet werden können, um die mit errno verknüpfte Textnachricht anzuzeigen .

Lassen Sie uns versuchen, einen Fehlerzustand zu simulieren und versuchen, eine Datei zu öffnen, die nicht existiert. Hier verwende ich beide Funktionen, um die Verwendung zu zeigen, aber Sie können Ihre Fehler auf eine oder mehrere Arten drucken. Der zweite wichtige Punkt ist, dass Sie stderr verwenden sollten Dateistream, um alle Fehler auszugeben.

#include <stdio.h>
#include <errno.h>
#include <string.h>

extern int errno ;

int main () {

   FILE * pf;
   int errnum;
   pf = fopen ("unexist.txt", "rb");
	
   if (pf == NULL) {
   
      errnum = errno;
      fprintf(stderr, "Value of errno: %d\n", errno);
      perror("Error printed by perror");
      fprintf(stderr, "Error opening file: %s\n", strerror( errnum ));
   } else {
   
      fclose (pf);
   }
   
   return 0;
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis −

Value of errno: 2
Error printed by perror: No such file or directory
Error opening file: No such file or directory

Division durch Null Fehler

Es ist ein häufiges Problem, dass Programmierer beim Teilen einer Zahl nicht prüfen, ob ein Teiler Null ist, und schließlich einen Laufzeitfehler erzeugen.

Der folgende Code behebt dies, indem überprüft wird, ob der Divisor null ist, bevor er dividiert −

Live-Demo
#include <stdio.h>
#include <stdlib.h>

main() {

   int dividend = 20;
   int divisor = 0;
   int quotient;
 
   if( divisor == 0){
      fprintf(stderr, "Division by zero! Exiting...\n");
      exit(-1);
   }
   
   quotient = dividend / divisor;
   fprintf(stderr, "Value of quotient : %d\n", quotient );

   exit(0);
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis −

Division by zero! Exiting...

Programmbeendigungsstatus

Es ist üblich, mit dem Wert EXIT_SUCCESS zu beenden, falls das Programm nach einer erfolgreichen Operation herauskommt. Hier ist EXIT_SUCCESS ein Makro und als 0 definiert.

Wenn Sie eine Fehlerbedingung in Ihrem Programm haben und herauskommen, sollten Sie mit einem Status EXIT_FAILURE beenden, der als -1 definiert ist. Schreiben wir das obige Programm also wie folgt −

Live-Demo
#include <stdio.h>
#include <stdlib.h>

main() {

   int dividend = 20;
   int divisor = 5;
   int quotient;
 
   if( divisor == 0) {
      fprintf(stderr, "Division by zero! Exiting...\n");
      exit(EXIT_FAILURE);
   }
	
   quotient = dividend / divisor;
   fprintf(stderr, "Value of quotient : %d\n", quotient );

   exit(EXIT_SUCCESS);
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis −

Value of quotient : 4

C Sprache

  1. C Dateiverwaltung
  2. Java-Ausnahmebehandlung
  3. Verstehen der ADC-Code-Fehlerrate
  4. Bandlagerung und -handhabung
  5. Dateibehandlung in C#:E/A-Operationen [Beispiele]
  6. C++-Signalverarbeitung
  7. C# - Ausnahmebehandlung
  8. Python - Behandlung von Ausnahmen
  9. Grundlagen der Materialhandhabungssicherheit
  10. Was ist Materialtransport?