Penanganan kesalahan adalah salah satu operasi yang sering dilakukan dalam siklus pengembangan perangkat lunak. Ini adalah aspek penting dari pemrograman yang baik. Go mengambil pendekatan yang sederhana dan mudah digunakan dengan mekanisme bawaannya untuk penanganan kesalahan. Ini didasarkan pada pengembalian kesalahan dari fungsi dan metode, memungkinkan Anda untuk fokus pada fungsionalitas kode yang intuitif dan mudah dibaca.
Anda menangani error di Go secara eksplisit, yang menghasilkan kerangka kerja yang solid untuk umpan balik, dengan kemampuan untuk mengimplementasikan logika coba ulang secara konsisten. Itu kesalahan paket menyediakan fungsionalitas tambahan untuk penanganan kesalahan.
Paket Kesalahan
Paket kesalahan adalah salah satu paket di pustaka standar Go. Paket ini menyediakan fungsi dan primitif penanganan kesalahan sederhana untuk membuat dan memanipulasi kesalahan secara konsisten di seluruh kode Go.
Paket menyediakan Baru fungsi untuk membuat kesalahan dengan pesan kesalahan khusus yang dapat Anda gunakan dengan cara yang sama seperti jenis kesalahan bawaan apa pun, seperti nol Dan Kesalahan metode dari kesalahan antarmuka.
Itu kesalahan package juga menyediakan fungsionalitas untuk membungkus dan membuka bungkus kesalahan, sebuah metode untuk penegasan tipe pada kesalahan.
Anda dapat mengimpor kesalahan paket dengan kata kunci impor. Cukup tentukan nama paket di daftar impor Anda.
impor"kesalahan"
Menangkap dan Menangani Error di Go
Pengetahuan tentang penanganan kesalahan dasar di Go meletakkan dasar untuk memahami kesalahan kemasan. Fungsi dan metode mengembalikan kesalahan yang disertai dengan sumber daya.
Berikut contoh penanganan error dari operasi pembukaan file dengan built-in os kemasan.
kemasan utama
impor (
"fmt"
"os"
)fungsiutama() {
file, err := os. Membuka("namafile.txt")jika salah!= nol {
fmt. Cetak (err)
}
// ...
}
Itu Membuka metode dari os paket berguna saat bekerja dengan file teks di Go. Ini membuka file, mengembalikan instance file terbuka dan kesalahan.
Nilai kesalahan bisa berupa nol ketik, menunjukkan tidak ada kesalahan. Namun, Anda dapat memeriksa kasus non-nil dan menangani kesalahan jika ada. Dalam kasus di atas, blok if mencetak kesalahan.
Anda dapat mengakses Kesalahan metode kesalahan untuk mengekstrak lebih banyak informasi tentang kesalahan (biasanya deskripsi).
jika salah!= nol {
fmt. Cetak (salah. Kesalahan())
}
Misalnya, jika file tidak ada, Anda akan melihat pesan kesalahan yang terlihat seperti ini:
Membuat Kesalahan di Go
Anda dapat membuat kesalahan dengan Baru metode dari kesalahan kemasan. Metode ini menerima pesan string dan mengembalikan kesalahan yang ditemui.
impor"kesalahan"
fungsiutama() {
salah := kesalahan. Baru("ada yang salah")
jika salah!= nol {
// kode penanganan kesalahan ada di sini
}
}
Itu utama fungsi membuat kesalahan baru dan menangani kemungkinan kesalahan dari pembuatan kesalahan dengan jika penyataan.
Anda juga dapat menentukan kesalahan khusus di Go. Metode konvensional menggunakan struct dan fungsi error untuk mengimplementasikan struct berdasarkan fungsionalitas error.
kemasan utama
impor"fmt"
jenis customError struct {
info rangkaian
}fungsiutama() {
// contoh pembuatan struct
err := customError{
informasi: "Ada yang salah!",
}
// menampilkan instance dari struct
fmt. Cetak (err)
}
Itu customError struct adalah cetak biru untuk kesalahan, dan info bidang string akan menyimpan pesan kesalahan.
Fungsi kesalahan Anda dapat mengimplementasikan customError struct dan mengembalikan string kesalahan.
fungsi(ce customError)Kesalahan()rangkaian {
kembali fmt. Sprintf("Terjadi kesalahan ubahsuaian: %v", ce.info)
}
Itu Kesalahan metode dari customError struct mengembalikan string menggunakan metode pemformatan Sprintf dari paket fmt.
Kesalahan Wrapping dan Unwrapping di Go
Anda dapat menambahkan informasi kontekstual lebih lanjut ke kesalahan dengan membungkusnya. Anda terutama akan menggunakan kesalahan terbungkus untuk membuat pesan kesalahan yang jelas untuk presisi dalam proses debug.
Anda dapat menggunakan Kesalahanf metode dari fmt paket yang menyediakan fungsionalitas untuk memformat pesan kesalahan untuk membungkus kesalahan. Itu Kesalahanf metode mengambil kata kerja pemformatan string dan string dan kesalahan dan mengembalikan kesalahan yang dibungkus.
impor (
"fmt"
"os"
)fungsiutama() {
_, salah := os. Membuka("namafile.txt")
jika salah!= nol {
dibungkusErr := fmt. Kesalahanf("Kesalahan membuka berkas: %v", salah)
fmt. Println (wrappedErr)
}
}
Itu utama fungsi membuka file dengan os paket Membuka metode dan membungkus kesalahan dengan metode Errorf dari fmt kemasan. Ini kemudian menampilkan kesalahan yang dibungkus ke konsol.
Anda dapat membuka kesalahan yang terbungkus dalam program Anda dengan Membuka metode dari kesalahan kemasan. Itu Membuka metode mengambil kesalahan yang dibungkus dan mengembalikan kesalahan yang tidak dibuka.
impor (
"fmt"
"os"
"kesalahan"
)fungsiutama() {
_, salah := os. Membuka("namafile.txt")
jika salah!= nol {
dibungkusErr := fmt. Kesalahanf("Kesalahan membuka berkas: %v", salah)
unwrappedErr := kesalahan. Buka bungkus (wrappedErr)
fmt. Println (unwrappedErr)
}
}
Itu utama fungsi membungkus kesalahan dari operasi pembukaan file, dan unwrappedErr variabel menyimpan kesalahan yang tidak terbungkus.
Catat Laporan Kesalahan Anda Dengan Paket Penebangan Pihak Ketiga Ini
Anda harus mencatat beberapa kesalahan untuk tinjauan selanjutnya, debugging, dan operasi lainnya selama proses pengembangan aplikasi Anda. Anda dapat menggunakan pertengkaran paket oleh paket Uber, Logrus, Zerolog, dan Log15 untuk logging yang cepat dan terstruktur.