Obsługa błędów
Błędy są faktem w oprogramowaniu, dlatego Rust posiada szereg funkcji do obsługi sytuacji, w których coś idzie nie tak. W wielu przypadkach Rust wymaga od Ciebie uznania możliwości błędu i podjęcia pewnych działań, zanim Twój kod się skompiluje. Ten wymóg sprawia, że Twój program jest bardziej niezawodny, zapewniając, że odkryjesz błędy i obsłużysz je odpowiednio, zanim wdrożysz swój kod do produkcji!
Rust dzieli błędy na dwie główne kategorie: błędy odzyskiwalne i nieodzyskiwalne. W przypadku błędu odzyskiwalnego, takiego jak błąd pliku nie znaleziono, najprawdopodobniej chcemy po prostu zgłosić problem użytkownikowi i ponowić operację. Błędy nieodzyskiwalne są zawsze objawami błędów, takich jak próba dostępu do lokalizacji 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, używając mechanizmów takich jak wyjątki. Rust nie ma wyjątków. Zamiast tego, ma typ Result<T, E> dla błędów odzyskiwalnych i makro panic! które zatrzymuje wykonanie, gdy program napotka błąd nieodzyskiwalny. Ten rozdział najpierw omawia wywoływanie panic!, a następnie mówi o zwracaniu wartości Result<T, E>. Dodatkowo, zbadamy rozważania przy podejmowaniu decyzji, czy spróbować odzyskać się po błędzie, czy zatrzymać wykonanie.