Error Handling — Go

Error Handling di Go Go tidak menggunakan try/catch seperti bahasa lain. Sebagai gantinya, error adalah nilai yang dikembalikan dari fungsi dan harus…

Error Handling di Go

Go tidak menggunakan try/catch seperti bahasa lain. Sebagai gantinya, error adalah nilai yang dikembalikan dari fungsi dan harus di-handle secara eksplisit.

Interface error

type error interface {
    Error() string
}

Setiap tipe yang mengimplementasikan method Error() string adalah sebuah error.

Pattern: if err != nil

hasil, err := lakukanSesuatu()
if err != nil {
    fmt.Println("Error:", err)
    return
}
fmt.Println("Berhasil:", hasil)

Membuat Error

import (
    "errors"
    "fmt"
)

// Menggunakan errors.New
func bagi(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("pembagian dengan nol")
    }
    return a / b, nil
}

// Menggunakan fmt.Errorf (dengan format)
func cariUser(id int) (string, error) {
    if id <= 0 {
        return "", fmt.Errorf("ID tidak valid: %d", id)
    }
    return "Budi", nil
}

Kapan Return Error?

Jangan Abaikan Error!

// BURUK — error diabaikan
hasil, _ := bagi(10, 0)

// BAIK — error di-handle
hasil, err := bagi(10, 0)
if err != nil {
    log.Fatal(err)
}

Yang akan kamu pelajari