defer vs errdefer dalam Praktik
Pilih antara selalu dijalankan dan hanya saat terjadi kesalahan.
defer vs errdefer dalam Praktik 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.
Dua Kata Kunci Pembersihan
Zig memberi Anda dua alat penjadwalan: defer selalu dijalankan, sedangkan errdefer hanya dijalankan saat scope berakhir dengan error.
defer Berarti Selalu
Gunakan defer saat pembersihan harus terjadi apa pun yang terjadi, misalnya menutup file yang Anda buka selama seluruh fungsi.
const f = try open();
defer f.close();errdefer Berarti saat Gagal
errdefer hanya dijalankan jika scope keluar melalui error. Saat pengembalian berhasil, errdefer dilewati secara diam-diam.
const buf = try alloc();
errdefer free(buf);Mengapa Dilewati saat Berhasil
Terkadang Anda membuat suatu nilai untuk mengembalikannya. Jika berhasil, pemanggil memilikinya, jadi Anda tidak boleh membebaskannya; errdefer menghormati hal tersebut.
Objek yang Baru Dibuat Sebagian
errdefer sangat berguna dalam konstruktor. Jika langkah berikutnya gagal, errdefer membatalkan alokasi sebelumnya sehingga Anda tidak pernah membocorkan objek yang baru dibuat sebagian.
const a = try alloc();
errdefer free(a);
const b = try alloc();Keberhasilan Menyerahkan Kepemilikan
Saat setiap langkah berhasil, fungsi mengembalikan nilainya dan errdefer tidak dijalankan. Kepemilikan berpindah dengan bersih kepada pemanggil.
return MyType{ .a = a, .b = b };Keduanya Berpadu dengan Baik
Anda dapat mencampurkan keduanya. defer menangani memori sementara, sedangkan errdefer melindungi hasil yang ingin Anda kembalikan.
Keduanya Mengikuti Urutan Terbalik
Seperti defer, beberapa errdefer dibongkar dalam urutan terbalik. Saat terjadi error, Zig menjalankan defer dan errdefer yang sesuai bersama-sama, dimulai dari yang terbaru.
Penempatan Itu Penting
Letakkan setiap errdefer tepat setelah langkah yang dilindunginya. errdefer hanya melindungi kegagalan yang terjadi setelah barisnya sendiri tercapai.
Aturan Sederhana
Ajukan satu pertanyaan: apakah pembersihan ini juga harus dijalankan saat berhasil? Jika ya, gunakan defer; jika hanya saat error, gunakan errdefer.
Bebas Kebocoran sejak Awal
Bersama-sama, kata kunci ini memungkinkan Anda menulis fungsi yang bebas kebocoran pada setiap jalur, baik berhasil maupun gagal, tanpa pencatatan manual.
Pemeriksaan Singkat
Kapan errdefer dijalankan dibandingkan dengan defer?
Ringkasan
Gunakan defer saat pembersihan harus selalu dijalankan, dan errdefer saat pembersihan hanya perlu membatalkan pekerjaan pada jalur error. ✅
Pertanyaan yang Sering Diajukan
Apakah pelajaran “defer vs errdefer dalam Praktik” gratis?
Ya — teks lengkap “defer vs errdefer dalam Praktik” 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 “defer vs errdefer dalam Praktik”?
Pilih antara selalu dijalankan dan hanya saat terjadi kesalahan. 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 “defer vs errdefer dalam Praktik” 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
- Jaminan defer
- Urutan Eksekusi Beberapa defer
- defer vs errdefer dalam Praktik
- Memasangkan Open dengan Close