Jak radzić sobie z błędami w języku C
Zasadniczo istnieją dwa rodzaje błędów, które istnieją w programowaniu C, które są następujące:
Jakie są błędy składniowe
Błędy składniowe są spowodowane nieprawidłową składnią w kodzie, a kompilator może łatwo je wykryć podczas procesu kompilacji. Aby uniknąć błędów składniowych, lepiej zrozumieć podstawowe reguły składni programowania C.
Jakie są błędy czasu wykonywania
Błędy w czasie wykonywania wystąpią, gdy program jest wykonywany i może powodować różne problemy, takie jak wycieki pamięci, usterki segmentacji i nieprawidłowe użycie wskazówek.
Jak poradzić sobie z błędami
Aby poradzić sobie z tymi błędami, musimy zrozumieć główny powód wystąpienia tego rodzaju błędów, abyśmy mogli je odpowiednio zająć się nimi.
W C można wykorzystać zintegrowane procedury korekcji błędów do zarządzania błędami. C Language zapewnia kilka wbudowanych funkcji, które mogą pomóc zidentyfikować i naprawić błędy. Poniżej znajduje się lista funkcji obsługi, których można użyć w programowaniu C:
1: Za pomocą funkcji Perror ()
Perror () jest wbudowaną funkcją w programowaniu C, która służy do wydrukowania komunikatu o błędzie na standardowym wyjściu błędu (STDERR) w oparciu o kod błędu ustawiony przez poprzednie wywołanie funkcji, które nie powiodło się. Jeśli jest to ciąg i nie jest null, jest zapisywany przed tekstem błędu. Na przykład, jeśli pracujesz z plikami, a operacja pliku się nie powiedzie, możesz użyć Perror () funkcja do wydrukowania komunikatu o błędzie na standardowym błędzie:
#włączaćPowyższe C definiuje funkcję main (), która próbuje otworzyć nieistniejący plik w trybie odczytu za pomocą fopen () funkcjonować. fopen () daje NULL i tworzy globalną wartość errno, ponieważ brakuje pliku. Następnie program drukuje numer błędu za pomocą errno i komunikat o błędzie za pomocą Perror ().
Wyjście
2: Za pomocą funkcji strerror ()
strerror () Funkcja jest wbudowaną funkcją obsługi błędów, która służy do pobierania komunikatu o błędzie czytelnym człowieka dla danego kodu błędu. Zmienna globalna Errno jest zwykle używana jako wejście kodu błędu do strerror () funkcjonować. Gdy błąd występuje podczas wykonywania programu, kod błędu jest zwykle ustawiany na określoną wartość przez system lub funkcję biblioteki, która wykryła błąd. Ten kod błędu można następnie użyć do wyszukiwania odpowiedniego komunikatu o błędzie za pomocą strerror () funkcjonować.
strerror () Funkcja dostarcza łańcuch zakończony null, który zawiera komunikat ostrzegawczy dla określonego kodu błędu. Ten komunikat o błędzie można wydrukować na konsoli lub wyświetlić użytkownikowi, aby podać informacje o przyczynie błędu.
#włączaćPowyższy kod określa funkcję main (), która próbuje otworzyć nieistniejący plik w trybie „V” za pomocą fopen () funkcjonować. fopen () wyprowadza null i aktualizuje globalny wskaźnik errno, ponieważ otwarty plik nie jest obecny. Następnie program drukuje komunikat o błędzie za pomocą strerror () funkcja, aby przekonwertować kod błędu w errno na komunikat o błędzie czytelnionego człowieka.
Wyjście
3: Za pomocą funkcji exit ()
Wyjście() Funkcja to kolejny użyteczny sposób do użycia do obsługi błędów, który natychmiast kończy program z określonym statusem wyjścia. Kiedy program nie może kontynuować z powodu śmiertelnego błędu lub wyjątkowej sytuacji, kończy go.
Metoda exit () akceptuje wejście liczb całkowitych reprezentujących stan wyjścia programu. Wartość zero wskazuje na dopuszczalne zakończenie, ale wartości niezerowe wskazują błąd lub nieprawidłowe zakończenie.
#włączaćPowyższy program otwiera plik o nazwie "brak pliku.tekst" W trybie „Z”. Jeśli plik nie zostanie znaleziony, wydrukuje komunikat o błędzie i zakończy program za pomocą Wyjście() Funkcja z kodem stanu 1.
Wyjście
4: Za pomocą funkcji Assert ()
zapewniać() Funkcja jest użytecznym narzędziem do obsługi błędów podczas tworzenia programu. Umożliwia programistom łapanie i obsługę błędów logicznych lub programistycznych, które mogą prowadzić do niezdefiniowanego zachowania lub awarii programu.
Podczas korzystania z zapewniać() funkcja, logiczne wyrażenie jest przekazywane jako argument. Nic się nie dzieje, jeśli oświadczenie oceni True, a program przebiega normalnie. Jeśli jednak wyrażenie ocenia fałszywe, zapewniać() Funkcja drukuje komunikat o błędzie do konsoli i natychmiast kończy program.
#włączaćW powyższym kodzie funkcja assert jest używana do sprawdzenia, czy wartość A jest równa 10. Jeśli A nie jest równe 10, program zatrzyma się i wyświetli komunikat o błędzie. Jeśli A jest równe 10, program będzie kontynuowany normalnie i wydrukuje wartość x.
Wyjście
Wniosek
C zapewnia kilka funkcji obsługi błędów, które programiści mogą użyć do poprawy niezawodności i odporności swoich programów. Funkcje te obejmują Perror (), strerror (), exit () I zapewniać(). Korzystając z tych funkcji, ważne jest, aby przestrzegać najlepszych praktyk obsługi błędów, takich jak sprawdzanie wartości zwrotnych z funkcji i obsługę błędów w sposób, który nie zagraża bezpieczeństwa lub stabilności programu.