Zig Academy · Pelajaran

Membungkus dan Melempar Ulang Kesalahan

Tambahkan konteks saat kesalahan bergerak ke atas.

Pelajaran 4 dari 413 langkah

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. ✅

Gratis untuk memulai

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

  1. Memulihkan dengan catch
  2. Melakukan switch pada Kesalahan Tertentu
  3. errdefer untuk Pembersihan saat Gagal
  4. Membungkus dan Melempar Ulang Kesalahan
← Kembali ke Zig Academy