defer berbanding errdefer dalam Amalan
Pilih antara sentiasa berjalan dengan berjalan apabila ralat.
defer berbanding errdefer dalam Amalan ialah pelajaran Zig Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Zig Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Zig Academy merangkumi sejumlah 4 pelajaran.
Dua Kata Kunci Pembersihan
Zig menyediakan dua alat penjadualan: defer sentiasa berjalan, manakala errdefer hanya berjalan apabila skop berakhir dengan ralat.
defer Bermaksud Sentiasa
Gunakan defer apabila pembersihan mesti berlaku tanpa mengira keadaan, seperti menutup fail yang anda buka untuk keseluruhan fungsi.
const f = try open();
defer f.close();errdefer Bermaksud ketika Gagal
errdefer hanya berjalan jika skop keluar melalui ralat. Semasa pemulangan berjaya, ia dilangkau secara senyap.
const buf = try alloc();
errdefer free(buf);Mengapa Dilangkau apabila Berjaya
Kadangkala anda membina nilai untuk return. Apabila berjaya, pemanggil memilikinya, jadi anda tidak boleh membebaskannya; errdefer menghormati perkara itu.
Objek Separuh Dibina
errdefer sangat berguna dalam pembina. Jika langkah kemudian gagal, ia membatalkan peruntukan terdahulu supaya anda tidak pernah membocorkan objek yang separuh dibina.
const a = try alloc();
errdefer free(a);
const b = try alloc();Kejayaan Memindahkan Pemilikan
Apabila setiap langkah berjaya, fungsi mengembalikan nilai dan errdefer tidak berjalan. Pemilikan berpindah dengan kemas kepada pemanggil.
return MyType{ .a = a, .b = b };Kedua-duanya Bergabung dengan Baik
Anda boleh mencampurkan kedua-duanya. defer mengendalikan memori sementara, manakala errdefer melindungi hasil yang anda rancang untuk kembalikan.
Kedua-duanya Mematuhi Susunan Terbalik
Seperti defer, beberapa errdefer diuraikan secara terbalik. Apabila berlaku ralat, Zig menjalankan defer dan errdefer yang sepadan bersama-sama, bermula dengan yang terbaharu.
Peletakan Penting
Letakkan setiap errdefer betul-betul selepas langkah yang dilindunginya. Ia hanya menjaga kegagalan yang berlaku selepas barisnya sendiri dicapai.
Peraturan Mudah
Tanya satu soalan: patutkah pembersihan ini berjalan apabila berjaya juga? Ya bermaksud defer; hanya apabila berlaku ralat bermaksud errdefer.
Bebas Kebocoran melalui Pembinaan
Bersama-sama, kata kunci ini membolehkan anda menulis fungsi yang bebas kebocoran pada setiap laluan, sama ada berjaya atau gagal, tanpa pengurusan rekod manual.
Semakan Pantas
Bilakah errdefer berjalan berbanding defer?
Ringkasan
Gunakan defer apabila pembersihan mesti sentiasa berjalan, dan errdefer apabila ia hanya perlu membatalkan kerja pada laluan ralat. ✅
Pelajari Zig dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Soalan Lazim
Adakah pelajaran “defer berbanding errdefer dalam Amalan” percuma?
Ya — teks penuh “defer berbanding errdefer dalam Amalan” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Zig Academy, tingkat taraf kepada CoddyKit PRO. Kursus Zig Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “defer berbanding errdefer dalam Amalan”?
Pilih antara sentiasa berjalan dengan berjalan apabila ralat. Anda berlatih Zig Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Zig Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Zig Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “defer berbanding errdefer dalam Amalan” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Zig Academy ini?
Ya. Setiap pelajaran Zig Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Jaminan defer
- Turutan Pelaksanaan Berbilang defer
- defer berbanding errdefer dalam Amalan
- Menggandingkan Open dengan Close