C Academy · Lektion

Exception handling i C

Implementér robuste strategier til fejlhåndtering uden indbygget exception handling

Lektion 3 af 310 trin

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 setjmp og longjmp til undtagelseshåndtering.
  • Hvordan du bruger errno til håndtering af systemfejl.
Exception handling i C — illustration 1

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 errno til systemfejl.
  • Brug kun setjmp og longjmp, 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 setjmp og longjmp simulerer undtagelseshåndtering.
  • Hvordan du bruger errno til at registrere systemfejl.

Dette afslutter afsnittet om fejlfinding og fejlhåndtering i C!

Exception handling i C — illustration 10
Gratis at komme i gang

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

  1. Fejlfinding med GDB
  2. Almindelige runtime-fejl
  3. Exception handling i C
← Tilbage til C Academy