package main

import (
	"errors"
	"fmt"
	"strconv"
)

func bacaNilai(teks string) error {
	_, err := strconv.Atoi(teks)
	if err != nil {
		return fmt.Errorf("baca nilai dari %q: %w", teks, err)
	}
	return nil
}

func muatPengaturan(teks string) error {
	if err := bacaNilai(teks); err != nil {
		return fmt.Errorf("muat pengaturan: %w", err)
	}
	return nil
}

func main() {
	err := muatPengaturan("sembilan")
	fmt.Println("pesan :", err)
	fmt.Println("syntax:", errors.Is(err, strconv.ErrSyntax))

	asli := errors.New("berkas rusak")
	denganV := fmt.Errorf("baca berkas: %v", asli)
	denganW := fmt.Errorf("baca berkas: %w", asli)
	fmt.Println("verb v, errors.Is:", errors.Is(denganV, asli))
	fmt.Println("verb w, errors.Is:", errors.Is(denganW, asli))

	errKafka := errors.New("koneksi kafka gagal")
	errRedis := errors.New("koneksi redis gagal")
	gabungan := errors.Join(errKafka, errRedis)
	fmt.Println("gabungan:")
	fmt.Println(gabungan)
	fmt.Println("errors.Is errRedis:", errors.Is(gabungan, errRedis))
}
