From 12cedbf36702048ebf1653187c7d7148a67714a4 Mon Sep 17 00:00:00 2001 From: Sebastian Steger Date: Wed, 20 Aug 2025 07:04:08 +0000 Subject: [PATCH] errors --- go/02-next-level/03-errors.go | 55 +++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 go/02-next-level/03-errors.go diff --git a/go/02-next-level/03-errors.go b/go/02-next-level/03-errors.go new file mode 100644 index 0000000..983549b --- /dev/null +++ b/go/02-next-level/03-errors.go @@ -0,0 +1,55 @@ +package main + +import ( + "errors" + "fmt" +) + +func f(arg int) (int, error) { + if arg == 42 { + + return -1, errors.New("can't work with 42") + } + + return arg + 3, nil +} + +var ErrOutOfTea = fmt.Errorf("no more tea available") +var ErrPower = fmt.Errorf("can't boil water") + +func makeTea(arg int) error { + if arg == 2 { + return ErrOutOfTea + } else if arg == 4 { + + return fmt.Errorf("making tea: %w", ErrPower) + } + return nil +} + +func main() { + for _, i := range []int{7, 42} { + + if r, e := f(i); e != nil { + fmt.Println("f failed:", e) + } else { + fmt.Println("f worked:", r) + } + } + + for i := range 5 { + if err := makeTea(i); err != nil { + + if errors.Is(err, ErrOutOfTea) { + fmt.Println("We should buy new tea!") + } else if errors.Is(err, ErrPower) { + fmt.Println("Now it is dark.") + } else { + fmt.Printf("unknown error: %s\n", err) + } + continue + } + + fmt.Println("Tea is ready!") + } +}