Menu
Coddy logo textTech

Podstawowa obsługa błędów

Część sekcji Podstawy ścieżki GO w Coddy. Lekcja 108 z 109.

Podstawowa obsługa błędów to podstawowy wzorzec w Go, w którym sprawdzasz błędy po operacjach, które mogą się nie powieść.

Nauczmy się obsługiwać błędy w Go, tworząc prostą funkcję dzielenia, która zwraca błąd przy dzieleniu przez zero:

func divide(a, b int) (int, error) {
    if b == 0 {
        return 0, errors.New("division by zero")
    }
    return a / b, nil
}

Ta funkcja zwraca dwie wartości: wynik dzielenia i błąd. Jeśli dzielnik wynosi zero, zwraca komunikat o błędzie zamiast próbować wykonać dzielenie.

Teraz zobaczmy, jak używać tej funkcji i obsługiwać ewentualne błędy:

result, err := divide(10, 0)
    
if err != nil {
    fmt.Println("Error occurred:", err)
    return // Zatrzymaj wykonywanie lub obsłuż błąd
}
    
fmt.Println("Result:", result)

Po wykonaniu tego kodu sprawdzamy, czy wystąpił błąd, używając warunku if err != nil. Ponieważ próbowaliśmy dzielić przez zero, funkcja zwraca błąd, a na ekranie pojawi się następujący komunikat:

Error occurred: division by zero

Ten wzorzec polegający na zwracaniu błędu jako ostatniej wartości zwracanej i natychmiastowym jego sprawdzaniu jest bardzo powszechny w Go. Pozwala programowi łagodnie obsługiwać błędy zamiast ulegać awarii.

challenge icon

Wyzwanie

Łatwy

W tym wyzwaniu przećwiczysz podstawową obsługę błędów w Go. Masz funkcję, która dzieli dwie liczby, ale dzielenie przez zero powoduje błąd w czasie wykonywania. Twoim zadaniem jest dodać obsługę błędów, aby zapobiec awarii.

Kod zawiera już funkcję, która zwraca zarówno wynik, jak i błąd. Musisz sprawdzić, czy wystąpił błąd, zanim użyjesz wyniku.

Spróbuj swoich sił

package main

import (
	"errors"
	"fmt"
)

// Ta funkcja dzieli x przez y i zwraca błąd, jeśli y jest równe zero
func divide(x, y float64) (float64, error) {
	if y == 0 {
		return 0, errors.New("cannot divide by zero")
	}
	return x / y, nil
}

func main() {
	// Wartości testowe
	numerator := 10.0
	denominator := 0.0
	
	// Wywołaj funkcję divide
	result, err := divide(numerator, denominator)
	
	// TODO: Sprawdź, czy err nie jest nil (wystąpił błąd)
	// Jeśli wystąpił błąd, wypisz go za pomocą fmt.Println(err)
	// W przeciwnym razie wypisz wynik za pomocą fmt.Printf("Result: %.2f\n", result)
	
	// Usuń ten wiersz i zaimplementuj powyżej prawidłową obsługę błędów
	fmt.Printf("Result: %.2f\n", result)
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator Go online