W tym artykule pokazano, czym jest instrukcja try-catch i jak jest ona implementowana na przykładzie programowania w języku C.
Co to jest instrukcja Try Catch?
The próbować instrukcja definiuje kolekcję instrukcji, które mogą utworzyć wyjątek. Kiedy wystąpi określony rodzaj wyjątku, blok catch jest miejscem, w którym wyjątek jest wysyłany. Kompilator albo wyświetli powiadomienie o błędzie, albo wyjątek będzie kontynuował podróż w górę stosu wywołań, dopóki nie zostanie zaadresowany, jeśli blok try/catch go nie obsłuży.
Ogólna składnia próbuj złapać oświadczenie jest podane jako:
próbować {
/*
Wstaw kod, który prawdopodobnie będzie generował błędy
*/
}
złapać {
/*
Napisz kod Do obsługa wygenerowanych błędów.
*/
}
Co to jest instrukcja try-catch w C?
C nie obsługuje obsługi wyjątków i nie ma wbudowanego mechanizmu, aby to zrobić. Można to jednak w pewnym stopniu symulować za pomocą setjmp I longjmp połączenia. Bez możliwości zwolnienia pamięci po odwiedzeniu stosu mechanizmy obsługi wyjątków są nieefektywne i niebezpieczne, a C nie ma modułu wyrzucania elementów bezużytecznych. Aby zwolnić pamięć RAM, prawdopodobnie musielibyśmy również zintegrować menedżerów kontekstu.
Teraz, gdy wprowadzamy ulepszenia kodu, będziemy stopniowo konstruować rozwiązanie. Longjmp i setjmp to dwie funkcje C, które mogą być dostarczone przez plik nagłówkowy setjmp.h, który będziemy wykorzystywać. Funkcja setjmp akceptuje zmienne typu jmp_buf i zwraca 0, gdy jest wywoływana bezpośrednio. Gdy ta sama zmienna jmp_buf jest używana do wywołania funkcji longjmp z dwiema zmiennymi, funkcja setjmp zwraca wartość odpowiadającą wartości drugiego argumentu funkcji longjmp.
Przykład powyższej implementacji podano jako:
#include#include
#define SPRÓBUJ zrobić { jmp_buf buf_state; if (!setjmp(stan_buf)) {
#define CATCH } else {
#define ENDTRY }} while(0)
#define RZUĆ longjmp(buf_state, 1)
int główny ( )
{
PRÓBOWAĆ {
drukujf ( „Wypróbuj testowanie instrukcji \N ' ) ;
RZUCIĆ;
drukujf ( „Instrukcja nie powinna się pojawić, ponieważ blok THROW już zgłosił wyjątek \N ' ) ;
}
ZŁAPAĆ {
drukujf ( „Mam wyjątek \N ' ) ;
}
KONIEC;
powrót 0 ;
}
W powyższym programie C KONIEC funkcja służy do dostarczania zamykającej części bloku do-while.
Wniosek
Jeśli program napotka wyjątek z powodu błędu danych lub kodu podczas działania, „ próbować ' I ' złapać ” opisać, jak nim zarządzać. W próbować blok kodu, wyjątki występują podczas a złapać blok jest miejscem, z którego pochodzą błędy próbować bloki są znajdowane i obsługiwane. Wiele języków programowania obsługuje próbuj złapać blokuje, ale C nie. W tym przewodniku opisano metodę używania instrukcji try-catch w programowaniu w języku C.