Aufgaben-Python/courses/go/07_explizites_error_handling
2026-09-12 13:26:06 +02:00
..
aufgabe.go Vollständige Umsetzung von Phase A bis C: (1) SQL & Data Analytics Master (16 Module), (2) HTML5 & Modern CSS3 (16 Module) und (3) Go Cloud Microservices (16 Module). Plattform umfasst nun 131 Module über 7 Sprachen 2026-08-30 13:10:38 +02:00
index.html Branding-Update für it-praxisportal.de: Neuer Hero-Bereich, SVG-Favicon, OpenGraph-Metadaten und Plattform-Titel 2026-09-12 13:26:06 +02:00
musterloesung.go Vollständige Umsetzung von Phase A bis C: (1) SQL & Data Analytics Master (16 Module), (2) HTML5 & Modern CSS3 (16 Module) und (3) Go Cloud Microservices (16 Module). Plattform umfasst nun 131 Module über 7 Sprachen 2026-08-30 13:10:38 +02:00
README.md Vollständige Umsetzung von Phase A bis C: (1) SQL & Data Analytics Master (16 Module), (2) HTML5 & Modern CSS3 (16 Module) und (3) Go Cloud Microservices (16 Module). Plattform umfasst nun 131 Module über 7 Sprachen 2026-08-30 13:10:38 +02:00
test_aufgabe.go Vollständige Umsetzung von Phase A bis C: (1) SQL & Data Analytics Master (16 Module), (2) HTML5 & Modern CSS3 (16 Module) und (3) Go Cloud Microservices (16 Module). Plattform umfasst nun 131 Module über 7 Sprachen 2026-08-30 13:10:38 +02:00

Go 07: Explizites Error-Handling ⚡

Willkommen zu Modul 07 des Go (Golang) Kurses!

In diesem Modul lernst du das fehlerrobuste Paradigma von Go kennen: Keine unkontrollierten Exceptions, sondern explizite Rückgabewerte (if err != nil), vordefinierte Sentinel Errors, Error-Wrapping mit %w und Custom Error-Structs.


💡 1. Das Wichtigste in Kürze

Fehler sind Werte

Das Go error-Interface erfordert lediglich eine Methode:

type error interface {
    Error() string
}

Sentinel Errors

Globale, unveränderliche Fehlervariablen:

var ErrNotFound = errors.New("eintrag nicht gefunden")

Error Wrapping

Kontextinformationen hinzufügen, ohne die ursprüngliche Fehlerursache zu zerstören:

return fmt.Errorf("datenbank-abfrage fehlgeschlagen: %w", err)

Eigene Error-Structs

Strukturierte Zusatzdaten (wie Fehlercodes) als Struct kapseln:

type QueryError struct {
    Query string
    Err   error
}
func (e *QueryError) Error() string { return fmt.Sprintf("Fehler bei %s: %v", e.Query, e.Err) }

🎯 Teilziele in aufgabe.go

  1. TODO 1: Sentinel Errors ErrInvalidAmount und ErrInsufficientFunds definieren.
  2. TODO 2: Struct BankAccount mit Deposit und Withdraw Methoden implementieren.
  3. TODO 3: Custom Struct APIError mit Error() string definieren.
  4. TODO 4: ExecuteRequest(endpoint, token string) (string, error) mit Error-Wrapping umsetzen.