0Pricing
C Academy · Lekcja

Obsługa wyjątków w C

Proszę implementować solidne strategie obsługi błędów bez wbudowanego mechanizmu wyjątków.

Obsługa wyjątków w C to bezpłatna lekcja C Academy na CoddyKit. To lekcja 3 z 3. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C Academy zawiera 3 lekcji w sumie.

Wprowadzenie do obsługi wyjątków

Obsługa wyjątków w języku C

W przeciwieństwie do języków takich jak C++ i Java, język C nie ma wbudowanej obsługi wyjątków.

W tej lekcji nauczą się Państwo:

  • Jak obsługiwać błędy za pomocą wartości zwracanych.
  • Jak używać setjmp i longjmp do obsługi wyjątków.
  • Jak używać errno do obsługi błędów systemowych.
Obsługa wyjątków w C — ilustracja 1

Obsługa błędów za pomocą wartości zwracanych

Obsługa błędów za pomocą wartości zwracanych

Najprostszym sposobem obsługi błędów w języku C jest użycie wartości zwracanych.

Przykład:

int divide(int a, int b) { if (b == 0) return -1; // Error code return a / b; }

Wywołujący sprawdza wartość zwracaną pod kątem błędów.

Przykład: obsługa błędów za pomocą wartości zwracanych

Przykład: obsługa błędów za pomocą wartości zwracanych

Ten program wykrywa dzielenie przez zero za pomocą wartości zwracanych.

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

Używanie setjmp i longjmp do obsługi błędów

Używanie setjmp i longjmp do obsługi błędów

Funkcje setjmp i longjmp umożliwiają wykonywanie nielokalnych skoków, symulując obsługę wyjątków.

Wykonaj następujące kroki:

  • Użyj setjmp(), aby oznaczyć punkt przywracania.
  • Użyj longjmp(), aby w razie wystąpienia błędu wrócić do tego punktu.

Przykład: używanie setjmp i longjmp

Przykład: używanie setjmp i longjmp

Ten program używa funkcji setjmp i longjmp do obsługi błędów.

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

Używanie errno do obsługi błędów systemowych

Używanie errno do obsługi błędów systemowych

Zmienna errno przechowuje kody błędów zwracane przez wywołania systemowe.

Przykład:

#include

Funkcje takie jak fopen() ustawiają errno, gdy wystąpi błąd.

Przykład: używanie errno do obsługi plików

Przykład: używanie errno do obsługi plików

Ten program sprawdza wartość errno podczas otwierania nieistniejącego pliku.

#include <stdio.h>
#include <errno.h>

int main() {
    FILE *file = fopen("nonexistent.txt", "r");
    if (!file) {
        perror("Error opening file");
    }
    return 0;
}

Dobre praktyki obsługi błędów

Dobre praktyki obsługi błędów

Aby skutecznie obsługiwać błędy:

  • Sprawdzać wartości zwracane przez funkcje.
  • Używać errno do obsługi błędów systemowych.
  • Używać setjmp i longjmp tylko wtedy, gdy jest to konieczne.

Podsumowanie

Podsumowanie

W tej lekcji nauczyli się Państwo:

  • Jak obsługiwać błędy za pomocą wartości zwracanych.
  • Jak setjmp i longjmp symulują obsługę wyjątków.
  • Jak używać errno do wykrywania błędów systemowych.

To kończy sekcję dotyczącą debugowania i obsługi błędów w języku C!

Obsługa wyjątków w C — ilustracja 10

Często zadawane pytania

Czy lekcja „Obsługa wyjątków w C” jest bezpłatna?

Tak — pełny tekst „Obsługa wyjątków w C” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C Academy, przejdź na CoddyKit PRO. Kurs C Academy zawiera 3 lekcji w sumie.

Co nauczysz się w „Obsługa wyjątków w C”?

Proszę implementować solidne strategie obsługi błędów bez wbudowanego mechanizmu wyjątków. Ćwiczysz C Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć C Academy?

Nie wymagamy żadnego doświadczenia. C Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 3.

Ile czasu zajmuje lekcja „Obsługa wyjątków w C”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji C Academy?

Tak. Każda lekcja C Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Debugowanie za pomocą GDB
  2. Typowe błędy czasu wykonywania
  3. Obsługa wyjątków w C
← Powrót do C Academy