Pola Penanganan Error
Gabungkan optional dan expected
Pola Penanganan Error adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 4 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 C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.
Dua Alat, Satu Tujuan
std::optional dan std::expected sama-sama menggantikan penanda yang rawan galat. Pelajaran ini menunjukkan pola untuk menggabungkan dan menyusunnya dengan rapi.
Mengembalikan Nilai Lebih Awal Saat Kosong
Pola yang sederhana dan mudah dibaca: periksa optional, lalu hentikan lebih awal jika kosong sebelum melanjutkan.
#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";
}Mengubah Optional Menjadi Expected
Ubah optional yang tidak berisi menjadi galat yang dijelaskan ketika pemanggil memerlukan alasannya.
#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() {}Merangkai dengan value_or
Ketika beberapa pencarian menghasilkan satu keluaran, value_or memungkinkan Anda memberikan nilai bawaan secara langsung tanpa percabangan if yang bertingkat.
#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";
}Meneruskan Galat ke Tingkat Atas
Dengan std::expected, suatu fungsi dapat memeriksa pemanggilan fungsi bagian dan meneruskan galatnya tanpa perubahan, sehingga membentuk alur galat.
#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() {}Monadik and_then
and_then pada C++23 merangkai operasi yang masing-masing mengembalikan optional atau expected, lalu berhenti pada kegagalan pertama tanpa rangkaian percabangan if manual.
transform untuk Pemetaan
transform menerapkan fungsi biasa pada nilai yang berhasil dan membiarkan galat atau kondisi kosong tetap apa adanya, sehingga hanya jalur keberhasilan yang dipetakan.
or_else untuk Pemulihan
or_else menjalankan mekanisme pengganti yang dapat menyediakan nilai pengganti atau galat alternatif ketika nilai asli kosong atau gagal.
Memilih di Antara Keduanya
Gunakan optional ketika kondisi tidak ada tidak memerlukan penjelasan (misalnya data tidak ditemukan di tembolok). Gunakan expected ketika pemanggil harus membedakan alasan kegagalan (misalnya galat penguraian dan galat izin).
Hindari Penanda Campuran
Jangan mencampur kode galat gaya lama dengan optional/expected dalam satu antarmuka pemrograman. Pilih satu strategi yang konsisten agar pemanggil menangani kegagalan secara seragam.
Pertahankan Tipe Galat
Utamakan enumerasi atau struktur kecil sebagai tipe galat, bukan string biasa, ketika kegagalan diperiksa secara terprogram; string paling sesuai untuk pesan yang ditujukan kepada manusia.
Uji Cepat
Periksa pemahaman Anda tentang pola penanganan galat.
Rangkuman
Anda telah mempelajari pola penanganan galat:
- Pengembalian lebih awal saat kosong atau terjadi galat membuat kode tetap datar.
- Ubah optional menjadi expected ketika alasannya diperlukan.
- Susun dengan
and_then,transform, danor_else(C++23). - Tetap konsisten; hindari mencampur penanda dengan optional/expected.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Pola Penanganan Error” gratis?
Ya — teks lengkap “Pola Penanganan Error” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Pola Penanganan Error”?
Gabungkan optional dan expected Kamu berlatih C++ 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 C++ Academy?
Tidak diperlukan pengalaman sebelumnya. C++ 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 4 dari 4.
Berapa lama pelajaran “Pola Penanganan Error” 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 C++ Academy ini?
Ya. Setiap pelajaran C++ 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
- Merepresentasikan Ketiadaan dengan optional
- Mengakses Nilai optional
- Dasar-Dasar std::expected
- Pola Penanganan Error