Czytelnicy tacy jak ty pomagają wspierać MUO. Kiedy dokonujesz zakupu za pomocą linków na naszej stronie, możemy otrzymać prowizję partnerską. Czytaj więcej.

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

instagram viewer
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.