Hata İşleme Örüntüleri
optional ve expected'ı birleştirin
Hata İşleme Örüntüleri, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.
İki Araç, Tek Amaç
std::optional ve std::expected, hataya açık işaret değerlerinin yerini tutar. Bu derste bunları temiz bir şekilde birleştirme ve oluşturma kalıpları gösterilmektedir.
Boşsa Erken Dönüş
Basit ve okunabilir bir kalıp kullanın: isteğe bağlı değeri denetleyin ve devam etmeden önce boşsa erkenden çıkın.
#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";
}İsteğe Bağlı Değerden Beklenene
Çağıranın bir nedene ihtiyaç duyduğu durumlarda eksik bir isteğe bağlı değeri açıklanmış bir hataya dönüştürün.
#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() {}value_or ile Zincirleme
Birden çok arama tek bir sonuca katkıda bulunduğunda value_or, iç içe koşul blokları kullanmadan varsayılan değerleri satır içinde sağlamanıza olanak tanır.
#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";
}Hataları Üst Katmana İletme
std::expected ile bir işlev, alt çağrıyı inceleyip hatasını değiştirmeden iletebilir ve bir hata işlem hattı oluşturabilir.
#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
C++23 and_then, her biri bir isteğe bağlı değer veya beklenen değer döndüren işlemleri zincirler; ilk başarısızlıkta zinciri keser ve elle koşul zinciri yazmayı gerektirmez.
Eşleme için transform
transform, başarı değerine sıradan bir işlev uygular ve hataları ya da boşluğu değiştirmeden bırakır; yalnızca başarılı yolu eşler.
Kurtarma için or_else
or_else, ilk değer boş olduğunda veya işlem başarısız olduğunda yerine geçecek bir değer ya da alternatif bir hata sağlayabilen bir geri dönüş işlemi çalıştırır.
Aralarında Seçim Yapma
Yokluğun açıklama gerektirmediği durumlarda (önbellekte bulunamama) isteğe bağlı değeri kullanın. Çağıranın başarısızlık nedenlerini ayırt etmesi gerektiğinde (ayrıştırma veya izin hataları) beklenen değeri kullanın.
Karışık İşaret Değerlerden Kaçının
Tek bir arayüzde eski tarz hata kodlarını isteğe bağlı veya beklenen değerlerle karıştırmayın. Çağıranların başarısızlıkları aynı biçimde ele alabilmesi için tutarlı tek bir strateji seçin.
Hataları Türlü Tutun
Başarısızlıklar program aracılığıyla denetleniyorsa yalın dizeler yerine bir numaralandırmayı veya küçük bir yapıyı hata türü olarak tercih edin; dizeler, insanlara gösterilen iletiler için daha uygundur.
Hızlı Kontrol
Hata yönetimi kalıpları konusundaki anlayışınızı kontrol edin.
Özet
Hata yönetimi kalıpları hakkında şunları öğrendiniz:
- Boş veya hatalı durumda erken dönmek kodu düz tutar.
- Bir nedene ihtiyaç olduğunda isteğe bağlı değeri beklenen değere dönüştürün.
and_then,transformveor_else(C++23) ile birleştirin.- Tutarlı kalın; işaret değerlerini isteğe bağlı veya beklenen değerlerle karıştırmaktan kaçının.
Sıkça Sorulan Sorular
“Hata İşleme Örüntüleri” dersi ücretsiz mi?
Evet — “Hata İşleme Örüntüleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.
“Hata İşleme Örüntüleri” dersinde ne öğreneceğim?
optional ve expected'ı birleştirin C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C++ Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Hata İşleme Örüntüleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- optional ile Yokluğu Temsil Etme
- optional Değerlerine Erişme
- std::expected Temelleri
- Hata İşleme Örüntüleri