errdefer untuk Pembersihan saat Gagal
Batalkan pekerjaan hanya saat terjadi kegagalan.
errdefer untuk Pembersihan saat Gagal adalah pelajaran Zig Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.
Pembersihan Hanya saat Gagal
Terkadang Anda harus membatalkan pekerjaan ketika suatu operasi gagal, tetapi mempertahankannya ketika operasi berhasil. Kasus khusus inilah yang ditangani oleh errdefer.
Kenali errdefer
errdefer menjadwalkan kode untuk dijalankan saat cakupan berakhir, tetapi hanya ketika fungsi mengembalikan error yang terjadi setelah titik tersebut.
errdefer allocator.free(buffer);defer Selalu, errdefer saat Error
defer dijalankan apa pun cara berakhirnya cakupan. errdefer hanya dijalankan pada jalur error, sehingga jalur berhasil melewatinya sepenuhnya.
Bebaskan Hasil yang Belum Selesai
Lakukan alokasi, lalu jadwalkan errdefer untuk membebaskannya. Jika langkah berikutnya gagal, buffer dilepaskan; jika semua langkah berhasil, Anda mempertahankan dan mengembalikannya.
const buf = try allocator.alloc(u8, n);
errdefer allocator.free(buf);
try fill(buf);Urutan Mencerminkan Alokasi
Tempatkan setiap errdefer tepat setelah perolehan sumber daya yang sesuai. Saat terjadi kegagalan, semuanya dijalankan secara terbalik sehingga sumber daya dilepas dalam urutan yang aman.
const a = try open();
errdefer a.close();
const b = try open();
errdefer b.close();Keberhasilan Mempertahankan Pekerjaan Anda
Ketika fungsi mengembalikan nilai, bukan error, setiap errdefer dilewati. Pemanggil menerima hasil yang telah selesai dibangun.
return buf;Titik Pemicu Itu Penting
errdefer hanya melindungi error yang terjadi setelahnya didaftarkan. Error sebelum baris tersebut tidak dapat memicunya, jadi tempatkan sedini mungkin.
Tangkap Errornya
Anda dapat menangkap error dalam errdefer untuk memeriksanya selama pembersihan, misalnya untuk mencatat kegagalan yang memicu pembatalan.
errdefer |e| std.debug.print("failed: {}\n", .{e});Membangun Konstruktor Tanpa Kebocoran
Fungsi yang melakukan alokasi lalu mungkin gagal menggunakan errdefer agar bebas dari kebocoran. Pekerjaan yang baru sebagian selesai dibatalkan secara otomatis saat terjadi error.
Padukan dengan try
Setiap try dapat keluar lebih awal saat terjadi error. Dengan errdefer yang telah didaftarkan, keluar lebih awal tersebut tetap memicu pembersihan Anda sebelum proses pembatalan berlanjut.
const x = try step();
errdefer rollback(x);
_ = try next(x);Alat yang Tepat untuk Pembatalan
Gunakan errdefer ketika pembersihan hanya perlu dilakukan jika terjadi masalah. Ini mengubah pengelolaan sumber daya pada jalur error menjadi satu baris yang jelas.
Pemeriksaan Singkat
Anda mengalokasikan sebuah buffer, lalu langkah berikutnya mungkin gagal. Anda ingin buffer tersebut dibebaskan hanya saat gagal. Apa yang Anda gunakan?
Ringkasan
Anda menggunakan errdefer untuk membatalkan pekerjaan yang belum selesai pada jalur error, menempatkannya tepat setelah setiap perolehan sumber daya, dan mempertahankan hasil yang berhasil. ✅
Pertanyaan yang Sering Diajukan
Apakah pelajaran “errdefer untuk Pembersihan saat Gagal” gratis?
Ya — teks lengkap “errdefer untuk Pembersihan saat Gagal” 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 “errdefer untuk Pembersihan saat Gagal”?
Batalkan pekerjaan hanya saat terjadi kegagalan. 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 3 dari 4.
Berapa lama pelajaran “errdefer untuk Pembersihan saat Gagal” 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