Membungkus dan Melempar Ulang Kesalahan
Tambahkan konteks saat kesalahan bergerak ke atas.
Membungkus dan Melempar Ulang Kesalahan adalah pelajaran Zig Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Zig Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Zig Academy mencakup 4 pelajaran total.
Error Bergerak ke Tingkat Atas
Ketika sebuah fungsi tidak dapat menangani kegagalan sendiri, fungsi tersebut meneruskan error kepada pemanggilnya. Dalam prosesnya, Anda dapat menyesuaikan atau melemparkan ulang error tersebut.
Lemparkan Ulang dengan try
Cara paling sederhana untuk melemparkan ulang adalah try. Ini meneruskan error asli tanpa perubahan kepada pemanggil, sehingga nilai yang sama terus bergerak ke tingkat atas.
const data = try readFile(path);Tangkap Lalu Kembalikan
Untuk menerjemahkan sebuah error, catch error tersebut lalu kembalikan error yang berbeda. Dengan begitu, error tingkat rendah diganti dengan error yang sesuai untuk API Anda.
const f = open(path) catch return error.ConfigMissing;Petakan Error dengan switch
Padukan catch dengan switch untuk memetakan setiap error yang mendasari menjadi error yang lebih jelas, sementara error lainnya diteruskan tanpa perubahan.
parse(s) catch |e| switch (e) {
error.Empty => return error.NoInput,
else => return e,
};Zig Tidak Memiliki Jejak Stack sebagai Nilai
Error dalam Zig hanyalah tag, bukan objek yang menyimpan konteks. Untuk menambahkan detail, Anda melemparkan ulang error milik Anda yang lebih deskriptif.
Lampirkan Konteks Secara Terpisah
Karena tag error tidak membawa pesan, catat detailnya di tempat kegagalan terjadi, lalu kembalikan error tingkat lebih tinggi kepada pemanggil.
open(path) catch |e| {
std.log.err("open {s}: {}", .{ path, e });
return error.LoadFailed;
};Perluas Himpunan Error
Jika Anda mengembalikan error baru, himpunan error fungsi Anda harus menyertakannya. Himpunan !T hasil inferensi akan berkembang untuk mencakup semua yang Anda kembalikan.
fn load() !Config {
return open(".cfg") catch error.LoadFailed;
}Pertahankan atau Ganti
Tentukan pada setiap lapisan: teruskan error yang sama persis dengan try, atau ganti dengan error yang lebih masuk akal bagi pemanggil Anda. Keduanya valid.
Jaga Batas Tetap Bersih
Pada batas modul, petakan error internal ke himpunan publik yang kecil. Pemanggil kemudian bergantung pada nama yang stabil, bukan detail internal Anda.
Padukan dengan errdefer
Ketika Anda melemparkan ulang, setiap errdefer dalam cakupan tersebut tetap dijalankan terlebih dahulu. Jadi, Anda dapat membatalkan alokasi sumber daya dan menerjemahkan error dalam satu jalur.
Kegagalan yang Bermakna
Membungkus error mengubah penyebab mentah menjadi pesan yang sesuai dengan ranah Anda. Pemanggil melihat error yang jelas, bukan detail internal.
Pemeriksaan Singkat
Anda ingin mengganti error tingkat rendah error.NotFound dengan error.ConfigMissing milik Anda untuk pemanggil. Cara mana yang berhasil?
Ringkasan
Anda melemparkan ulang error dengan try, memetakannya melalui catch dan switch, mencatat konteks, serta memperluas himpunan error agar kegagalan tetap bermakna. ✅
Belajar Zig dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Membungkus dan Melempar Ulang Kesalahan” gratis?
Ya — teks lengkap “Membungkus dan Melempar Ulang Kesalahan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Zig Academy, upgrade ke CoddyKit PRO. Kursus Zig Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Membungkus dan Melempar Ulang Kesalahan”?
Tambahkan konteks saat kesalahan bergerak ke atas. Kamu berlatih Zig Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Zig Academy?
Tidak diperlukan pengalaman sebelumnya. Zig Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Membungkus dan Melempar Ulang Kesalahan” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Zig Academy ini?
Ya. Setiap pelajaran Zig Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Memulihkan dengan catch
- Melakukan switch pada Kesalahan Tertentu
- errdefer untuk Pembersihan saat Gagal
- Membungkus dan Melempar Ulang Kesalahan