Obsługa błędów jest jedną z częstych operacji w cyklu wytwarzania oprogramowania. To kluczowy aspekt dobrego programowania. Go stosuje proste i łatwe w użyciu podejście dzięki wbudowanemu mechanizmowi obsługi błędów. Opiera się na zwracaniu błędów z funkcji i metod, co pozwala skupić się na funkcjonalności kodu, która jest intuicyjna i łatwa do odczytania.
Błędy w Go są obsługiwane w sposób jawny, co zapewnia solidną strukturę informacji zwrotnych, z możliwością spójnego wdrażania logiki ponawiania prób. The błędy pakiet zapewnia dodatkową funkcjonalność obsługi błędów.
Pakiet błędów
Pakiet błędów jest jednym z pakietów w standardowej bibliotece Go. Pakiet zapewnia proste prymitywy obsługi błędów i funkcje do spójnego tworzenia i manipulowania błędami w całym kodzie Go.
Pakiet zapewnia Nowy funkcja do tworzenia błędów z niestandardowymi komunikatami o błędach, których można używać w taki sam sposób, jak dowolnego wbudowanego typu błędu, takiego jak
zero I Błąd metoda tzw błąd interfejs.The błędy package zapewnia również funkcjonalność zawijania i rozpakowywania błędów, metodę potwierdzania typów błędów.
Możesz zaimportować błędy pakiet ze słowem kluczowym import. Po prostu podaj nazwę paczki na liście importów.
import„błędy”
Wychwytywanie i obsługa błędów w Go
Znajomość podstawowej obsługi błędów w Go stanowi podstawę do zrozumienia błędy pakiet. Funkcje i metody zwracają błędy, którym towarzyszy zasób.
Oto przykład obsługi błędów z operacji otwierania pliku z wbudowanym os pakiet.
pakiet główny
import (
"fmt"
„os”
)funkcjagłówny() {
plik, błąd := os. Otwarty(„nazwa pliku.txt”)Jeśli błąd!= zero {
fmt. Println (błąd)
}
// ...
}
The otwarty metoda tzw os pakiet jest przydatny, gdy praca z plikami tekstowymi w Go. Otwiera plik, zwracając instancję otwartego pliku i plik błąd.
Wartość błędu może być zero typu, wskazując brak błędów. Możesz jednak sprawdzić, czy przypadek nie jest zerowy i obsłużyć błąd, jeśli jest obecny. W powyższym przypadku blok if wyświetla błąd.
Możesz uzyskać dostęp do Błąd metoda błędu, aby wyodrębnić więcej informacji o błędzie (zwykle opis).
Jeśli błąd!= zero {
fmt. Println (błąd. Błąd())
}
Na przykład, jeśli plik nie istnieje, zobaczysz komunikat o błędzie, który wygląda mniej więcej tak:
Tworzenie błędów w Go
Możesz tworzyć błędy za pomocą Nowy metoda tzw błędy pakiet. Ta metoda przyjmuje komunikat w postaci ciągu znaków i zwraca napotkane błędy.
import„błędy”
funkcjagłówny() {
błąd := błędy. Nowy("coś poszło nie tak")
Jeśli błąd!= zero {
// tutaj znajduje się kod obsługi błędów
}
}
The główny funkcja tworzy nowy błąd i obsługuje możliwe błędy wynikające z tworzenia błędu za pomocą an Jeśli oświadczenie.
Błędy niestandardowe można również definiować w Go. Konwencjonalna metoda wykorzystuje strukturę i funkcję błędu do zaimplementowania struktury w oparciu o funkcjonalność błędu.
pakiet główny
import"fmt"
typ błąd niestandardowy struktura {
informacje strunowy
}funkcjagłówny() {
// przykładowa instancja struktury
błąd := błąd niestandardowy{
informacje: "Coś poszło nie tak!",
}
// wypisuje instancję struktury
fmt. Println (błąd)
}
The błąd niestandardowy struct jest planem błędu, a informacje pole tekstowe będzie zawierało komunikat o błędzie.
Twoje funkcje błędów mogą implementować błąd niestandardowy struct i zwróć ciąg błędu.
funkcja(ce błąd niestandardowy)Błąd()strunowy {
powrót fmt. Sprintf(„Wystąpił błąd niestandardowy: %v”, ce.info)
}
The Błąd metoda tzw błąd niestandardowy struct zwraca ciąg za pomocą metoda formatowania Sprintf pakietu fmt.
Zawijanie i rozpakowywanie błędów w Go
Możesz dodać dalsze informacje kontekstowe do błędów, opakowując je. Będziesz głównie używać opakowanych błędów do tworzenia wyraźnych komunikatów o błędach w celu precyzyjnego debugowania.
Możesz użyć Błądf metoda tzw fmt pakiet, który zapewnia funkcjonalność formatowania komunikatów o błędach w celu zawijania błędów. The Błądf Metoda pobiera ciąg i czasownik formatujący ciąg oraz błąd i zwraca opakowany błąd.
import (
"fmt"
„os”
)funkcjagłówny() {
_, błąd := os. Otwarty(„nazwa pliku.txt”)
Jeśli błąd!= zero {
wrapErr := fmt. błądf(„Błąd podczas otwierania pliku: %v”, błąd)
fmt. Println (wrappedErr)
}
}
The główny funkcja otwiera plik z rozszerzeniem os paczek otwarty metoda i opakowuje błąd metodą Errorf programu fmt pakiet. Następnie wysyła opakowany błąd do konsoli.
Możesz rozpakować opakowane błędy w swoich programach za pomocą Odwijać się metoda tzw błędy pakiet. The Odwijać się Metoda przyjmuje opakowany błąd i zwraca nieopakowany błąd.
import (
"fmt"
„os”
„błędy”
)funkcjagłówny() {
_, błąd := os. Otwarty(„nazwa pliku.txt”)
Jeśli błąd!= zero {
wrapErr := fmt. błądf(„Błąd podczas otwierania pliku: %v”, błąd)
unwrappedErr := błędy. Rozwiń (wrappedErr)
fmt. Println (unwrappedErr)
}
}
The główny funkcja zawija błąd z operacji otwierania pliku, a funkcja rozpakowanyErr zmienna zawiera rozpakowany błąd.
Rejestruj raporty o błędach za pomocą tych pakietów rejestrowania innych firm
Konieczne będzie zarejestrowanie niektórych błędów do późniejszych recenzji, debugowania i innych operacji podczas procesu tworzenia aplikacji. Możesz użyć zastrzelić package firmy Uber, Logrus, Zerolog i Log15 do szybkiego, ustrukturyzowanego logowania.