Exception handling i C
Implementér robuste strategier til fejlhåndtering uden indbygget exception handling
Exception handling i C er en gratis C Academy-lektion på CoddyKit. Dette er lektion 3 af 3. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i C Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. C Academy-kurset indeholder 3 lektioner i alt.
Introduktion til undtagelseshåndtering
Undtagelseshåndtering i C
I modsætning til sprog som C++ og Java har C ikke indbygget undtagelseshåndtering.
I denne lektion lærer du:
- Hvordan du håndterer fejl ved hjælp af returværdier.
- Hvordan du bruger
setjmpoglongjmptil undtagelseshåndtering. - Hvordan du bruger
errnotil håndtering af systemfejl.

Håndtering af fejl med returværdier
Den enkleste måde at håndtere fejl i C på er at bruge returværdier.
Eksempel:
int divide(int a, int b) {
if (b == 0) return -1; // Error code
return a / b;
}
Den kaldende kode kontrollerer returværdien for fejl.
Eksempel: Fejlhåndtering med returværdier
Dette program kontrollerer division med nul ved hjælp af returværdier.
#include <stdio.h>
int divide(int a, int b) {
if (b == 0) {
printf("Error: Division by zero!\n");
return -1;
}
return a / b;
}
int main() {
int result = divide(10, 0);
if (result != -1) {
printf("Result: %d\n", result);
}
return 0;
}Brug af setjmp og longjmp til fejlhåndtering
Funktionerne setjmp og longjmp gør det muligt at springe uden for den aktuelle kontekst, så de simulerer undtagelseshåndtering.
Trin:
- Brug
setjmp()til at markere et genoprettelsespunkt. - Brug
longjmp()til at springe tilbage, når der opstår en fejl.
Eksempel: Brug af setjmp og longjmp
Dette program bruger setjmp og longjmp til fejlhåndtering.
#include <stdio.h>
#include <setjmp.h>
jmp_buf buffer;
void errorHandler() {
printf("Error occurred! Jumping back to safe state.\n");
longjmp(buffer, 1);
}
int main() {
if (setjmp(buffer) == 0) {
printf("Executing main program...\n");
errorHandler();
} else {
printf("Recovered from error.\n");
}
return 0;
}Brug af errno til systemfejl
Variablen errno gemmer fejlkoder fra systemkald.
Eksempel:
#include
Funktioner som fopen() angiver errno, når der opstår fejl.
Eksempel: Brug af errno til filhåndtering
Dette program kontrollerer errno, når det åbner en fil, der ikke findes.
#include <stdio.h>
#include <errno.h>
int main() {
FILE *file = fopen("nonexistent.txt", "r");
if (!file) {
perror("Error opening file");
}
return 0;
}Bedste fremgangsmåder til fejlhåndtering
Sådan håndterer du fejl effektivt:
- Kontrollér funktionernes returværdier.
- Brug
errnotil systemfejl. - Brug kun
setjmpoglongjmp, når det er nødvendigt.
Opsummering
I denne lektion har du lært:
- Hvordan du håndterer fejl ved hjælp af returværdier.
- Hvordan
setjmpoglongjmpsimulerer undtagelseshåndtering. - Hvordan du bruger
errnotil at registrere systemfejl.
Dette afslutter afsnittet om fejlfinding og fejlhåndtering i C!

Lær C med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 39
- Lektioner
- 144
Ofte stillede spørgsmål
Er lektionen “Exception handling i C” gratis?
Ja — hele teksten til “Exception handling i C” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af C Academy-kurset, skal du opgradere til CoddyKit PRO. C Academy-kurset indeholder 3 lektioner i alt.
Hvad lærer jeg i “Exception handling i C”?
Implementér robuste strategier til fejlhåndtering uden indbygget exception handling Du øver dig i C Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på C Academy?
Der kræves ingen tidligere erfaring. C Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 3.
Hvor lang tid tager lektionen “Exception handling i C”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne C Academy-lektion?
Ja. Alle C Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Fejlfinding med GDB
- Almindelige runtime-fejl
- Exception handling i C