Go tidak menggunakan try-catch seperti Java/JS. Go menganggap error adalah kejadian normal yang harus dicek secara eksplisit.
Pattern
Fungsi biasanya mengembalikan nilai terakhir sebagai error. Kita cek if err != nil.
MAIN.GO
package mainimport ( "errors" "fmt")// Fungsi pembagianfunc bagi(a, b float64) (float64, error) { if b == 0 { return 0, errors.New("tidak bisa bagi dengan nol") } return a / b, nil // nil artinya tidak ada error}func main() { hasil, err := bagi(10, 0) // Cek apakah ada error if err != nil { fmt.Println("Error:", err) } else { fmt.Println("Hasil:", hasil) }}defer digunakan untuk menunda eksekusi kode sampai fungsi yang menampungnya selesai return.
When to use?
Sangat berguna untuk Clean Up Resource.
Contoh: Buka file -> Defer Tutup File. Ini menjamin file pasti ditutup walaupun ada error di tengah jalan.
MAIN.GO
package mainimport "fmt"func main() { // Baris ini akan dijalankan PALING TERAKHIR defer fmt.Println("3. Selesai cleanup") fmt.Println("1. Mulai program") fmt.Println("2. Proses data...") // Disini defer baru berjalan}