diff --git a/src/ch09-01-unrecoverable-errors-with-panic.md b/src/ch09-01-unrecoverable-errors-with-panic.md index 9c657e2a..ca548e34 100644 --- a/src/ch09-01-unrecoverable-errors-with-panic.md +++ b/src/ch09-01-unrecoverable-errors-with-panic.md @@ -5,22 +5,22 @@ W takich przypadkach Rust posiada makro `panic!`. Istnieją dwa sposoby na wywo w praktyce: podejmując działanie, które powoduje, że nasz kod wpada w panikę (np. dostęp do tablicy poza jej końcem) lub poprzez jawne wywołanie makra `panic!`. W obu przypadkach wywołujemy panikę w naszym programie. Domyślnie, te paniki -wypisują komunikat o niepowodzeniu, zwalniają, czyszczą stos i kończą działanie. Poprzez +wypisują komunikat o niepowodzeniu, zwijają, czyszczą stos i kończą działanie. Poprzez zmienną środowiskową, można również nakazać Rustowi wyświetlanie stosu wywołań, gdy wystąpi panika aby ułatwić odnalezienie źródła paniki. -> ### Rozwijanie Stosu lub Przerwanie w Odpowiedzi na Panikę +> ### Zwijanie Stosu lub Przerwanie w Odpowiedzi na Panikę > -> Domyślnie, gdy wystąpi panika, program rozpoczyna *zwalnianie*, co oznacza, że -> Rust cofa się w górę stosu i czyści dane z każdej napotkanej funkcji. +> Domyślnie, gdy wystąpi panika, program rozpoczyna *zwijanie*, co oznacza, że +> Rust cofa się w górę stosu i czyści dane każdej napotkanej funkcji. > Jednak cofanie się i czyszczenie to dużo pracy. Rust dlatego pozwala wybrać > alternatywę natychmiastowego *przerwania*, co kończy program bez czyszczenia. > > Pamięć, z której korzystał program, będzie musiała zostać wyczyszczona przez > system operacyjny. Jeśli w swoim projekcie chcesz, aby wynikowy plik binarny był tak -> mały jak to tylko możliwe, możesz przełączyć się z zwalniania na przerywanie w przypadku paniki poprzez +> mały jak to tylko możliwe, możesz przełączyć się ze zwijania na przerywanie w przypadku paniki poprzez > dodanie `panic = 'abort'` do odpowiednich sekcji `[profile]` w pliku -> pliku *Cargo.toml*. Na przykład, jeśli chcesz przerwać po panice w trybie zwolnienia, +> *Cargo.toml*. Na przykład, jeśli chcesz przerwać po panice w trybie zwijania, > dodaj to: > > ```toml @@ -52,11 +52,11 @@ zobaczymy wywołanie makra `panic!`. W innych przypadkach wywołanie `panic!` mo się w kodzie wywoływanym przez nasz kod, a nazwa pliku i numer linii zgłoszone przez komunikat o błędzie będą kodem innej osoby, w którym wywoływane jest makro `panic!`, a nie linią naszego kodu, która ostatecznie doprowadziła do wywołania `panic!`. -Możemy użyć śladu wstecznego funkcji, z których pochodzi wywołanie `panic!`, -aby dowiedzieć się, która część naszego kodu powoduje problem. Ślady wsteczne omówimy +Możemy użyć stosu wywołań funkcji, z których pochodzi wywołanie `panic!`, +aby dowiedzieć się, która część naszego kodu powoduje problem. Stosy wywołań omówimy bardziej szczegółowo w następnej części. -### Używanie śladu wstecznego `panic!` +### Używanie Stosu Wywołań `panic!` Spójrzmy na inny przykład, aby zobaczyć, jak to jest, gdy wywołanie `panic!` pochodzi z biblioteki z powodu błędu w naszym kodzie, a nie z naszego kodu @@ -97,15 +97,15 @@ i odmówi kontynuowania. Wypróbujmy to i zobaczmy: Ten błąd wskazuje na linię 4 naszego pliku `main.rs`, gdzie próbujemy uzyskać dostęp do indeksu 99. Następna linia notatki mówi nam, że możemy ustawić -zmienną środowiskową `RUST_BACKTRACE`, aby uzyskać ślad wsteczny tego, -co dokładnie spowodowało błąd. *Ślad wsteczny* to lista wszystkich funkcji, -które zostały wywołane, aby dotrzeć do tego punktu. Ślad wsteczny w Ruście działa -podobnie jak w innych językach: kluczem do odczytania śladu wstecznego jest +zmienną środowiskową `RUST_BACKTRACE`, aby uzyskać stos wysołań tego, +co dokładnie spowodowało błąd. *Stos wywołań* to lista wszystkich funkcji, +które zostały wywołane, aby dotrzeć do tego punktu. Stos wywołań w Ruście działa +podobnie jak w innych językach: kluczem do odczytania stosu wywołań jest rozpoczęcie od góry i czytanie, aż zobaczysz pliki, które napisałeś. Jest to miejsce, w którym pojawił się problem. Linie powyżej tego miejsca to kod, który został wywołany przez twój kod; linie poniżej to kod, który wywołał twój kod. Te linie przed i po mogą zawierać kod rdzenia Rusta, kod biblioteki standardowej lub używane skrzynki. -Spróbujmy uzyskać ślad wsteczny, ustawiając zmienną środowiskową `RUST_BACKTRACE` +Spróbujmy uzyskać stos wywołań, ustawiając zmienną środowiskową `RUST_BACKTRACE` na dowolną wartość z wyjątkiem 0. Listing 9-2 pokazuje dane wyjściowe podobne do tego, co zobaczysz.