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ć
setjmpilongjmpdo obsługi wyjątków. - Jak używać
errnodo obsługi błędów systemowych.

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ć
errnodo obsługi błędów systemowych. - Używać
setjmpilongjmptylko 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
setjmpilongjmpsymulują obsługę wyjątków. - Jak używać
errnodo wykrywania błędów systemowych.
To kończy sekcję dotyczącą debugowania i obsługi błędów w języku C!

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
- Debugowanie za pomocą GDB
- Typowe błędy czasu wykonywania
- Obsługa wyjątków w C