C Academy · Lektion

Undantagshantering i C

Implementera robusta strategier för felhantering utan inbyggd undantagshantering.

Lektion 3 av 310 steg

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 setjmp och longjmp för undantagshantering.
  • Hur du använder errno för hantering av systemfel.
Undantagshantering i C — illustration 1

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 errno för systemfel.
  • Använd setjmp och longjmp endast 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 setjmp och longjmp simulerar undantagshantering.
  • Hur du använder errno för att upptäcka systemfel.

Det här avslutar avsnittet om felsökning och felhantering i C!

Undantagshantering i C — illustration 10
Gratis att börja

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

  1. Felsökning med GDB
  2. Vanliga körningsfel
  3. Undantagshantering i C
← Tillbaka till C Academy