Main Menu

01 Agustus 2025 ・ 3 min read

Kenapa di Golang Selalu Cek Error Dulu? Ini Penjelasan Lengkapnya!

Fika Ridaul Maulayya
Full-Stack Developer, Content Creator and CO-Founder SantriKoding.com
0
0
0
0
0
0
0
0
0
SHARE
Kenapa di Golang Selalu Cek Error Dulu? Ini Penjelasan Lengkapnya!
👍 0 ❤️ 0 💡 0 🔥 0 🙌 0 🥳 0

Halo teman-teman semuanya, jika kita baru belajar Golang (Go), pasti pernah merasa heran: "Kenapa setiap habis manggil fungsi harus selalu cek error dulu?"

Contohnya seperti ini:

user, err := FindUserByID(id)
if err != nil {
    // tangani error
    return
}

// lanjut gunakan user

Sekilas, ini terasa repetitif dan membosankan, apalagi kalau kita sebelumnya menggunakan JavaScript, PHP, atau Python yang punya try-catch. Tapi percayalah, ada alasan kuat kenapa Go didesain seperti ini.

Yuk kita bahas kenapa di Go kita harus selalu cek error dulu.

1. Go Tidak Punya try-catch

Berbeda dengan banyak bahasa lain, Go tidak memiliki mekanisme try-catch. Alih-alih melempar exception, Go lebih memilih pendekatan yang eksplisit: fungsi yang berpotensi gagal akan mengembalikan nilai error.

Contoh:

data, err := ReadFile("config.json")
if err != nil {
    fmt.Println("Gagal baca file:", err)
    return
}

fmt.Println("Isi file:", string(data))

Daripada error "meledak" di tengah-tengah program, Go meminta kita untuk mengecek dan menangani error di tempat kejadian.

2. Prinsip "Fail Fast"

Go menganut prinsip fail fast:

"Kalau ada masalah, hentikan dan tangani secepat mungkin."

Dengan memeriksa err segera, kita tahu persis kapan dan di mana error terjadi, sehingga:

  • Aplikasi jadi lebih aman
  • Debugging jadi lebih mudah
  • Kode jadi lebih mudah dirawat

3. Lebih Aman dari Panic

Coba lihat contoh ini:

var user User
err := db.First(&user, 999).Error
if err != nil {
    // user tidak ditemukan
    return
}

// lanjut akses user.Name

Bayangkan jika kita tidak cek err, lalu langsung akses user.Name. Bisa jadi:

  • user belum diisi
  • Program crash karena akses ke data kosong

Dengan mengecek error lebih dulu, kita mencegah kesalahan logika dan panic yang tidak perlu.

4. Kenapa Tidak Cek result != nil?

Karena tidak semua result == nil berarti error.

Contoh:

  • Query database bisa mengembalikan hasil kosong (bukan error)
  • Fungsi bisa mengembalikan nilai default walau ada error

Maka dari itu, Go memisahkan return value dan error secara eksplisit agar tidak ambigu.

Contoh Perbandingan JavaScript vs Go

  • JavaScript:

    try {
        const data = await fetchData();
        console.log(data);
    } catch (err) {
        console.error("Gagal fetch:", err);
    }
    
    
  • GoLang:

    data, err := fetchData()
    if err != nil {
        fmt.Println("Gagal fetch:", err)
        return
    }
    
    fmt.Println(data)
    

    Di GoLang, kita menangani error dengan logika sendiri, bukan diserahkan ke mekanisme runtime seperti try-catch.

Kesimpulan

Cek error dulu di Go bukan karena gaya lama atau aturan ketat, tapi karena:

  • Go tidak punya try-catch
  • Go lebih suka pendekatan eksplisit dan aman
  • Prinsip fail fast bikin kode lebih stabil dan mudah ditelusuri

Semoga artikel ini membantumu memahami filosofi di balik cek error dulu di Go.

Terima Kasih


KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami