0Pricing
Zig Academy · Pelajaran

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

  1. Jaminan defer
  2. Urutan Eksekusi Beberapa defer
  3. defer vs errdefer dalam Praktik
  4. Memasangkan Open dengan Close
← Kembali ke Zig Academy