Jak używać instrukcji Try Catch w języku C

Jak Uzywac Instrukcji Try Catch W Jezyku C



Słowa „try” i „catch” opisują, co należy zrobić, gdy program napotka wyjątek z powodu problemu z kodem lub danymi. Wyjątki są obsługiwane w próbować blok kodu. Bloki catch służą do wyszukiwania i obsługi wyjątków z bloków try. Wiele języków programowania, w tym Python, C++ i JavaScript, zawiera próbuj złapać sprawozdania.

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.