C++ Academy · Pelajaran

Corak Pengendalian Ralat

Gabungkan optional dan expected

Pelajaran 4 daripada 413 langkah

Corak Pengendalian Ralat ialah pelajaran C++ Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran C++ Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus C++ Academy merangkumi sejumlah 4 pelajaran.

Dua Alat, Satu Matlamat

std::optional dan std::expected kedua-duanya menggantikan penanda yang mudah menyebabkan ralat. Pelajaran ini menunjukkan corak untuk menggabungkan dan merangkaikan kedua-duanya dengan kemas.

Pemulangan Awal Apabila Kosong

Corak yang mudah dan jelas: semak pilihan itu, kemudian keluar lebih awal jika ia kosong sebelum meneruskan.

#include <iostream>
#include <optional>
std::optional<int> parse(bool ok) { return ok ? std::optional<int>(5) : std::nullopt; }
int main() {
    auto v = parse(true);
    if (!v) { std::cout << "no value\n"; return 0; }
    std::cout << *v + 1 << "\n";
}

Daripada Pilihan kepada Jangkaan

Tukarkan pilihan yang tiada nilai kepada ralat yang dihuraikan apabila pemanggil memerlukan sebabnya.

#include <expected>
#include <optional>
#include <string>
std::expected<int, std::string> require(std::optional<int> o) {
    if (o) return *o;
    return std::unexpected("value missing");
}
int main() {}

Merangkaikan dengan value_or

Apabila beberapa carian menyumbang kepada satu hasil, value_or membolehkan anda membekalkan nilai lalai sebaris tanpa syarat if yang bersarang.

#include <iostream>
#include <optional>
int setting(std::optional<int> user, int fallback) {
    return user.value_or(fallback);
}
int main() {
    std::cout << setting(std::nullopt, 42) << "\n";
}

Menyebarkan Ralat ke Atas

Dengan std::expected, fungsi boleh memeriksa panggilan kecil dan meneruskan ralatnya tanpa perubahan, lalu membina alur ralat.

#include <expected>
#include <string>
using R = std::expected<int, std::string>;
R step1(bool ok) { return ok ? R(2) : R(std::unexpected("step1 failed")); }
R run(bool ok) {
    auto r = step1(ok);
    if (!r) return std::unexpected(r.error());
    return *r * 10;
}
int main() {}

Rangkaian Monadik dengan and_then

and_then C++23 merangkaikan operasi yang setiap satunya memulangkan pilihan atau jangkaan, serta berhenti pada kegagalan pertama tanpa rangkaian syarat manual.

Pemetaan dengan transform

transform menggunakan fungsi biasa pada nilai yang berjaya dan membiarkan ralat atau keadaan kosong tanpa perubahan, dengan hanya memetakan laluan berjaya.

Pemulihan dengan or_else

or_else menjalankan sandaran yang boleh membekalkan nilai gantian atau ralat alternatif apabila nilai asal tiada atau gagal.

Memilih Antara Kedua-duanya

Gunakan pilihan apabila ketiadaan tidak memerlukan penjelasan, seperti apabila data tiada dalam cache. Gunakan jangkaan apabila pemanggil mesti membezakan sebab kegagalan, seperti ralat penghuraian berbanding ralat kebenaran.

Elakkan Penanda Bercampur

Jangan campurkan kod ralat gaya lama dengan pilihan/jangkaan dalam satu antara muka pengaturcaraan. Pilih satu strategi yang konsisten supaya pemanggil mengendalikan kegagalan secara seragam.

Kekalkan Ralat dengan Jenis

Utamakan penghitungan atau struktur kecil sebagai jenis ralat berbanding rentetan kosong apabila kegagalan disemak secara terprogram; rentetan paling sesuai untuk mesej yang ditujukan kepada manusia.

Semakan Ringkas

Semak pemahaman anda tentang corak pengendalian ralat.

Ringkasan

Anda telah mempelajari corak pengendalian ralat:

  • Pemulangan awal apabila kosong atau gagal memastikan kod kekal rata.
  • Tukarkan pilihan kepada jangkaan apabila sebab diperlukan.
  • Gabungkan dengan and_then, transform dan or_else (C++23).
  • Kekalkan konsistensi; elakkan mencampurkan penanda dengan pilihan/jangkaan.
Percuma untuk bermula

Pelajari C++ 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
51
Pelajaran
203

Soalan Lazim

Adakah pelajaran “Corak Pengendalian Ralat” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran C++ Academy, termasuk “Corak Pengendalian Ralat”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus C++ Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Corak Pengendalian Ralat”?

Gabungkan optional dan expected Anda berlatih C++ 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 C++ Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran C++ 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 4 daripada 4.

Berapa lamakah pelajaran “Corak Pengendalian Ralat” 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 C++ Academy ini?

Ya. Setiap pelajaran C++ 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

  1. Mewakili Ketiadaan dengan optional
  2. Mengakses Nilai optional
  3. Asas std::expected
  4. Corak Pengendalian Ralat
← Kembali ke C++ Academy