Konsep error
Termasuk bagian Dasar-Dasar dalam perjalanan GO di Coddy. Pelajaran 102 dari 109.
Dalam Go, errors adalah nilai yang menunjukkan bahwa ada sesuatu yang tidak beres. Go menangani errors secara eksplisit, bukan menggunakan exceptions.
Mari buat fungsi yang mungkin menghasilkan error saat membagi angka:
func divide(a, b float64) (float64, error) {
if b == 0 {
return 0, errors.New("cannot divide by zero")
}
return a / b, nil
}Fungsi ini mengembalikan dua nilai: hasil pembagian dan kemungkinan error. Jika pembaginya nol, kita mengembalikan pesan error alih-alih mencoba melakukan pembagian.
Sekarang, mari gunakan fungsi kita dan tangani kemungkinan error:
result, err := divide(10, 0)
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Result:", result)
}Setelah menjalankan kode ini, kita akan melihat pesan error di layar karena kita mencoba membagi dengan nol:
Error: cannot divide by zeroIni menunjukkan pola penanganan error Go: periksa apakah terjadi error (err != nil), lalu ambil tindakan yang sesuai. Jika tidak terjadi error, kita dapat menggunakan hasilnya dengan aman.
Tantangan
MudahDalam tantangan ini, kamu akan berlatih menangani error di Go. Kamu akan membuat fungsi yang membagi dua angka dan mengembalikan error jika terjadi pembagian dengan nol.
Tugasmu:
- Lengkapi fungsi
divideyang menerima dua bilangan bulat dan mengembalikan hasil bagi serta error. - Jika pembaginya nol, kembalikan 0 dan error dengan pesan "division by zero".
- Jika pembagian valid, kembalikan hasilnya dan
niluntuk error. - Di fungsi
main, panggildividedengan nilai yang diberikan dan tangani error dengan tepat.
Latihan ini menunjukkan cara fungsi Go biasanya mengembalikan hasil dan error, serta cara memeriksa dan menangani error tersebut.
Coba sendiri
package main
import (
"errors"
"fmt"
)
// divide membagi a dengan b dan mengembalikan hasilnya
// Jika b bernilai 0, fungsi ini mengembalikan error
func divide(a, b int) (int, error) {
// TODO: Implementasikan fungsi divide
// Jika b bernilai 0, kembalikan 0 dan error dengan pesan "division by zero"
// Jika tidak, kembalikan a/b dan nil sebagai error
}
func main() {
// Kasus uji pertama
a, b := 10, 2
result, err := divide(a, b)
if err != nil {
fmt.Printf("Error: %s\n", err)
} else {
fmt.Printf("Result: %d\n", result)
}
// Kasus uji kedua
a, b = 8, 0
result, err = divide(a, b)
if err != nil {
fmt.Printf("Error: %s\n", err)
} else {
fmt.Printf("Result: %d\n", result)
}
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Dasar-Dasar
4Operator Perbandingan dan Logika
Operator Perbandingan, Bagian 1Operator Perbandingan, Bagian 2Operator AND LogikaOperator OR LogikaOperator NOT LogikaDasar Prioritas OperatorRingkasan, Membuat Perbandingan7Alur Kontrol: Perulangan
Penjelasan tentang `for` loop`for` loop Dasar`for` loop dengan Kondisi SajaKata Kunci `break`Kata Kunci `continue`Perulangan BersarangRangkuman: Mengulang Tindakan2Variabel dan Tipe Data Dasar
Apa itu variabelInferensi Tipe dengan `:=`Bilangan Bulat (int)Bilangan Floating-PointBooleanstringNilai NolKonstantaKonvensi PenamaanRangkuman: Variabel dan Tipe5Input/Output Dasar
Output TerformatKata Kerja FormatMencetak Tipe DataMendapatkan Input Dasar dari PenggunaRangkuman: Input dan Output8Fungsi
Memahami FungsiMendeklarasikan FungsiMemanggil FungsiParameter FungsiMengembalikan Satu NilaiMengembalikan Beberapa NilaiNilai Kembalian BernamaDasar Cakupan FungsiRangkuman: Membuat Kodemu Dapat Digunakan Kembali3Operator Dasar
Operator AritmetikaOperator PembagianOperator ModuloOperator PenugasanOperator Penugasan GabunganInkrementasi dan DekrementasiRangkuman: Perhitungan6Alur Kontrol: Percabangan
Pernyataan `if`Kata Kunci `else`Kata Kunci `else if`Shadowing Variabel dalam `if`Menginisialisasi VariabelPernyataan `switch``switch` dengan Ekspresi`switch` tanpa EkspresiKata Kunci `fallthrough`Ringkasan: Membuat KeputusanLatihan sendiri: Compiler Go online