Obsługa błędów
Prędzej czy później napotkasz błędy w oprogramowaniu, które tworzysz, dlatego Rust posiada szereg funkcji pozwalających radzić sobie z sytuacjami, w których coś pójdzie nie tak. W wielu przypadkach Rust wymaga, abyś potwierdził możliwość wystąpienia błędu i podjął pewne działania, zanim kod zostanie skompilowany. To sprawia, że Twój program jest bardziej niezawodny, zapewniając wykrycie błędów i odpowiednią ich obsługę przed wdrożeniem na środowisko produkcyjne!
Rust dzieli błędy na dwie główne kategorie: błędy możliwe do naprawienia i błędy nienaprawialne. W przypadku błędu, które można naprawić, np. plik nieodnaleziony, najprawdopodobniej chcemy po prostu zgłosić problem użytkownikowi i ponowić operacje. Błędy nienaprawialne są zawsze objawami problemów, takimi jak próba uzyskania dostępu do lokalizacji znajdującej się poza końcem tablicy, dlatego chcemy natychmiast zatrzymać program.
Większość języków nie rozróżnia tych dwóch rodzajów błędów i obsługuje oba w ten
sam sposób, wykorzystując mechanizmy takie jak wyjątki (ang. exception). Rust
nie ma wyjątków. Zamiast tego ma typ Result<T, E>
dla możliwych do naprawienia
błędów i makro panic!
, które zatrzymuje wykonywanie, gdy program napotka
nieodwracalny błąd. W tym rozdziale omówiono wywoływanie makra panic!
, a
następnie omówiono zwracanie wartości Result<T, E>
. Dodatkowo przeanalizowano
kwestie, które należy wziąć pod uwagę przy podejmowaniu decyzji, czy spróbować
zakończyć program na wybrany sposób, po wystąpieniu błędu, czy zatrzymać
wykonywanie.