Undantagshantering i C
Implementera robusta strategier för felhantering utan inbyggd undantagshantering.
Undantagshantering i C är en gratis lektion i C Academy på CoddyKit. Detta är lektion 3 av 3. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för C Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i C Academy innehåller totalt 3 lektioner.
Introduktion till undantagshantering
Undantagshantering i C
Till skillnad från språk som C++ och Java har C ingen inbyggd undantagshantering.
I den här lektionen lär du dig:
- Hur du hanterar fel med hjälp av returvärden.
- Hur du använder
setjmpochlongjmpför undantagshantering. - Hur du använder
errnoför hantering av systemfel.

Hantera fel med returvärden
Det enklaste sättet att hantera fel i C är att använda returvärden.
Exempel:
int divide(int a, int b) {
if (b == 0) return -1; // Error code
return a / b;
}
Anroparen kontrollerar returvärdet efter fel.
Exempel: Felhantering med returvärden
Det här programmet kontrollerar division med noll med hjälp av returvärden.
#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;
}Använda setjmp och longjmp för felhantering
Funktionerna setjmp och longjmp tillåter icke-lokala hopp som simulerar undantagshantering.
Steg:
- Använd
setjmp()för att markera en återställningspunkt. - Använd
longjmp()för att hoppa tillbaka när ett fel uppstår.
Exempel: Använda setjmp och longjmp
Det här programmet använder setjmp och longjmp för felhantering.
#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;
}Använda errno för systemfel
Variabeln errno lagrar felkoder från systemanrop.
Exempel:
#include
Funktioner som fopen() anger errno när fel uppstår.
Exempel: Använda errno för filhantering
Det här programmet kontrollerar errno när det försöker öppna en fil som inte finns.
#include <stdio.h>
#include <errno.h>
int main() {
FILE *file = fopen("nonexistent.txt", "r");
if (!file) {
perror("Error opening file");
}
return 0;
}Bästa praxis för felhantering
Så här hanterar du fel effektivt:
- Kontrollera funktioners returvärden.
- Använd
errnoför systemfel. - Använd
setjmpochlongjmpendast när det behövs.
Sammanfattning
I den här lektionen lärde du dig:
- Hur du hanterar fel med hjälp av returvärden.
- Hur
setjmpochlongjmpsimulerar undantagshantering. - Hur du använder
errnoför att upptäcka systemfel.
Det här avslutar avsnittet om felsökning och felhantering i C!

Lär dig C med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 39
- Lektioner
- 144
Vanliga frågor
Är lektionen ”Undantagshantering i C” gratis?
Ja – hela texten till ”Undantagshantering i C” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i C Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i C Academy innehåller totalt 3 lektioner.
Vad lär jag mig i ”Undantagshantering i C”?
Implementera robusta strategier för felhantering utan inbyggd undantagshantering. Ni övar på C Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig C Academy?
Du behöver inga förkunskaper. Utbildningen i C Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 3.
Hur lång tid tar lektionen ”Undantagshantering i C”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här C Academy-lektionen?
Ja. Varje C Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Felsökning med GDB
- Vanliga körningsfel
- Undantagshantering i C