Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

C - Foutafhandeling

Als zodanig biedt C-programmering geen directe ondersteuning voor foutafhandeling, maar omdat het een systeemprogrammeertaal is, biedt het u toegang op een lager niveau in de vorm van retourwaarden. De meeste C- of zelfs Unix-functieaanroepen retourneren -1 of NULL in geval van een fout en stellen een foutcode in errno . Het is ingesteld als een globale variabele en geeft aan dat er een fout is opgetreden tijdens een functieaanroep. U kunt verschillende foutcodes vinden die zijn gedefinieerd in het -headerbestand.

Dus een C-programmeur kan de geretourneerde waarden controleren en passende actie ondernemen, afhankelijk van de geretourneerde waarde. Het is een goede gewoonte om errno op 0 te zetten bij het initialiseren van een programma. Een waarde van 0 geeft aan dat er geen fout in het programma zit.

fout, fout(). en strerror()

De programmeertaal C biedt perror() en strerror() functies die kunnen worden gebruikt om het tekstbericht weer te geven dat is gekoppeld aan errno .

  • De perror() functie geeft de tekenreeks weer die u eraan doorgeeft, gevolgd door een dubbele punt, een spatie en vervolgens de tekstuele weergave van de huidige errno-waarde.

  • De strerror() functie, die een pointer terugstuurt naar de tekstuele representatie van de huidige errno-waarde.

Laten we proberen een foutconditie te simuleren en proberen een bestand te openen dat niet bestaat. Hier gebruik ik beide functies om het gebruik weer te geven, maar u kunt een of meer manieren gebruiken om uw fouten af ​​te drukken. Het tweede belangrijke punt om op te merken is dat u stderr . moet gebruiken bestandsstream om alle fouten uit te voeren.

#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;
}

Wanneer de bovenstaande code wordt gecompileerd en uitgevoerd, levert dit het volgende resultaat op −

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

Delen door nul fouten

Het is een veelvoorkomend probleem dat programmeurs bij het delen van een getal niet controleren of een deler nul is en uiteindelijk een runtime-fout creëert.

De onderstaande code lost dit op door te controleren of de deler nul is alvorens te delen −

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);
}

Wanneer de bovenstaande code wordt gecompileerd en uitgevoerd, levert dit het volgende resultaat op −

Division by zero! Exiting...

Beëindigingsstatus programma

Het is gebruikelijk om af te sluiten met de waarde EXIT_SUCCESS in het geval dat het programma uitkomt na een succesvolle bewerking. Hier is EXIT_SUCCESS een macro en is gedefinieerd als 0.

Als je een foutconditie in je programma hebt en je komt eruit, dan moet je afsluiten met een status EXIT_FAILURE die is gedefinieerd als -1. Dus laten we bovenstaand programma als volgt schrijven −

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);
}

Wanneer de bovenstaande code wordt gecompileerd en uitgevoerd, levert dit het volgende resultaat op −

Value of quotient : 4

C Taal

  1. C Bestandsverwerking
  2. Afhandeling van Java-uitzonderingen
  3. Inzicht in ADC-codefoutenpercentage
  4. Opslag en verwerking van de riem
  5. Bestandsafhandeling in C#:I/O-bewerkingen [voorbeelden]
  6. 4 soorten materiaalbehandelingsapparatuur
  7. C++ Signaalverwerking
  8. C# - Afhandeling van uitzonderingen
  9. Python - Afhandeling van uitzonderingen
  10. Basisprincipes voor het omgaan met materiaal
  11. Wat is materiaalbehandeling?