Error adalah Interface
Di Go, error bukanlah sekadar pesan teks biasa — ia adalah interface! Ini artinya kamu bisa membuat error versi kamu sendiri, selama memenuhi kontrak dari interface error.
type error interface {
Error() string
}
Biasanya kamu tidak perlu membuatnya manual, karena Go sudah menyediakan fungsi untuk membuat error:
import "errors"
err := errors.New("Oops, terjadi kesalahan!")
Menangani Error
Saat sebuah fungsi bisa gagal, biasanya ia akan mengembalikan error sebagai nilai kedua:
hasil, err := someFunction()
if err != nil {
fmt.Println("Terjadi error:", err)
}
Membuat Error Kustom
Karena error adalah interface, kamu bisa membuat struct yang implementasi method Error(). Contohnya:
type ValidationError struct {
Field string
}
func (v ValidationError) Error() string {
return "Validasi gagal di field: " + v.Field
}
Penggunaan:
err := ValidationError{Field: "username"}
fmt.Println(err.Error())
panic, recover, dan defer
Go juga menyediakan mekanisme untuk menangani kejadian luar biasa (mirip try-catch, tapi beda konsep).
panic
Digunakan untuk menghentikan program secara paksa ketika terjadi hal yang sangat fatal.
panic("Sesuatu yang sangat buruk terjadi!")
defer
Kode dalam defer akan selalu dijalankan setelah fungsi selesai dieksekusi — bahkan jika terjadi panic.
func main() {
defer fmt.Println("Akan selalu dijalankan")
fmt.Println("Sebelum panic")
panic("Boom!")
}
recover
Fungsi ini digunakan untuk menangkap panic agar program tidak langsung mati.
func tangkapPanic() {
if r := recover(); r != nil {
fmt.Println("Panic ditangkap:", r)
}
}
func main() {
defer tangkapPanic()
panic("Ups!")
}
Kapan Menggunakan Apa?
✅ error |
Untuk kondisi yang bisa diprediksi, seperti input salah, file tidak ditemukan, dll. |
🚨 panic |
Untuk kondisi yang benar-benar darurat dan tak terduga, seperti bug logika yang fatal. |
🛑 recover |
Digunakan hanya jika kamu punya alasan kuat untuk lanjut meskipun terjadi panic. |
Penutup
Di Go, error adalah bagian dari desain — bukan pengecualian. Biasakan untuk selalu menangani error agar aplikasi kamu lebih andal!

