Obsługa błędów w rdzy

Obsługa błędów w rdzy
Obsługa błędów jest praktycznie drugą najczęstszą rzeczą dla programatora, z wyjątkiem popełniania błędów, oczywiście. Jako programista napotkasz scenariusze, w których musisz oczekiwać błędu i stworzyć akcję, jeśli to się stanie.

Chociaż kompilator zaimplementuje domyślną obsługę błędów, dobrze jest zrozumieć, jak obsługiwać błędy dla niestandardowej logiki. Obsługa błędów uniemożliwi program program.

Poznajmy, jak radzić sobie z błędami w języku programowania rdzy.

Typy błędów rdzy

Istnieją dwa rodzaje błędów w rdzy:

  1. Błędy możliwe do odzyskania
  2. Niezwajane błędy

Niezwajane błędy

Niezwajane błędy odnoszą się do rodzajów błędów, które powodują, że program umierają lub wyjścią nienormalnie. Przykładem byłby dostęp do indeksu poza niepoprawieniem w tablicy.

Rdza używa paniki! Makro do obsługi nieokreślonymi błędami. Załóżmy, że kompilator napotyka panikę! Makro w twoim kodzie. Drukuje określone wiadomości, czyści stos i kończy program.

Panika! Makro jest bardzo przydatne, gdy napotykasz błędy, z których program nie może odzyskać.

Weź prosty program podany poniżej, który ilustruje, jak korzystać z makro paniki:

fn main ()
panika!("Nie żyję!!");

Po wykonaniu poprzedniego kodu powinieneś uzyskać dane wyjściowe, jak pokazano poniżej:

Wzywając panikę! powoduje, że program kończy i wydrukuje określoną metodę paniki.

Cofając panikę

Rust pozwala nam wycofać źródło błędu za pomocą zmiennej środowiskowej rust_backtrace. Odwrotność odnosi się do listy funkcji, które zostały wywołane przed wystąpieniem błędu.

Weźmy przykład podany poniżej:

fn main ()
Niech vec = vec![1,2,3,4,5];
println!(„”, Vec [5]);

W poprzednim przykładzie staramy się przeczytać wskaźnik tablicy poza nieokreślonymi. Powinno to spowodować panikę i wychodzenie.

Wyjście wyjściowe jest podane poniżej:

Jak widać z wyjścia, kompilator mówi nam, że możemy użyć zmiennej środowiskowej rust_backtrace, aby uzyskać wycofanie się błędu.

Możemy to zrobić za pomocą następującego polecenia:

$ Rust_backtrace = 1 bieg ładunkowy

Powinno to zwrócić wyjście cofania jako:

Powinno to zwrócić szczegółowe dane wyjściowe o tym, jak wystąpił błąd w twoim kodzie. W przypadku opcji całkowicie omawianej możesz użyć rust_backtrace = pełny.

Błędy możliwe do odzyskania

Zazwyczaj rzadko będziesz musiał obsługiwać nieprawidłowe błędy. Aby poradzić sobie z błędami w rdzy, używamy wyniku wyniku, które zawiera dwa warianty: OK i ERR.

Weźmy następujący prosty program, który próbuje otworzyć plik:

usestd :: fs :: plik;
fnmain ()
niech plik = plik :: otwórz („Witam.tekst");
println!(":?", plik);

Poprzedni kod próbuje otworzyć nieistniejący plik. Uruchamianie powyższego programu powinno powrócić jako:

Err (OS Code: 2, Kind: Notfound, Message: „System nie może znaleźć określonego pliku.")

Możemy jednak zdefiniować pożądane działanie, jeśli plik nie istnieje. Przykład jest pokazany poniżej:

usestd :: fs :: plik;
fnmain ()
niech plik = plik :: otwórz („Witam.tekst");
Plik dopasowy
OK (plik) =>
println!("plik znaleziony: :?", plik)
,
Err (_error) =>
println!("nie znaleziono pliku")


Tutaj używamy operatora dopasowania, aby sprawdzić, czy plik zwrócił błąd lub OK. Następnie podejmujemy działania dla każdej sprawy.

Możemy również użyć metody oczekiwania do tworzenia niestandardowych specyfiki obsługi błędów.

Na przykład:

usestd :: fs :: plik;
fnmain ()
niech plik = plik :: otwórz („Witam.tekst")
.oczekiwać („Błąd wystąpił podczas czytania pliku”);

Metoda oczekiwana, która wywoła makro Panic w błędzie, jest napotykana podczas otwierania pliku.

Zamknięcie

Ten samouczek obejmował podstawy obsługi błędów w języku programowania rdzy. Ponadto w tym przewodniku omówiono dwa rodzaje błędów: błędy możliwe do odzyskania i niewłaściwe błędy. Mamy nadzieję, że ten artykuł jest pomocny. Sprawdź inne artykuły z Linux, aby uzyskać więcej wskazówek i informacji.