try, catch, throw
Hataları özel durumlarla işleyin
try, catch, throw, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 1. 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.
throw ile Hataları Bildirme
throw ifadesi bir istisna oluşturur, geçerli yürütme yolunu terk eder ve çağrı yığınında bir işleyici arar.
#include <iostream>
#include <stdexcept>
int main() {
try {
throw std::runtime_error("boom");
} catch (const std::exception& e) {
std::cout << e.what() << "\n";
}
}try ve catch
İstisna oluşturabilecek kod bir try bloğuna yerleştirilir; eşleşen işleyiciler catch bloklarında bulunur.
#include <iostream>
#include <stdexcept>
int divide(int a, int b) {
if (b == 0) throw std::invalid_argument("divide by zero");
return a / b;
}
int main() {
try {
std::cout << divide(10, 0) << "\n";
} catch (const std::invalid_argument& e) {
std::cout << "error: " << e.what() << "\n";
}
}const Başvuruyla Yakalama
İstisnaları her zaman const& ile yakalayın. Değerle yakalamak, türetilmiş istisnaları keser ve gereksiz kopyalar oluşturur.
Birden Çok catch Bloğu
İşleyicileri en özeldenden en genele doğru sıralayın. İlk eşleşen blok çalışır.
#include <iostream>
#include <stdexcept>
int main() {
try {
throw std::out_of_range("bad index");
} catch (const std::out_of_range& e) {
std::cout << "range: " << e.what() << "\n";
} catch (const std::exception& e) {
std::cout << "other: " << e.what() << "\n";
}
}Yığın Çözme
Bir istisna oluşturulduğunda yığın çözülür: oluşturma noktası ile işleyici arasındaki her yerel nesne, ters sırayla yok edilir.
#include <iostream>
#include <stdexcept>
struct Trace {
~Trace() { std::cout << "unwound\n"; }
};
void f() {
Trace t;
throw std::runtime_error("x");
}
int main() {
try { f(); } catch (...) { std::cout << "caught\n"; }
}Tümünü Yakalayan İşleyici
Bir catch (...) bloğu her tür istisnayı yakalar. Bunu ölçülü kullanın; genellikle günlüğe kaydedip yeniden oluşturmak için uygundur.
İstisnayı Yeniden Oluşturma
Bir işleyicinin içinde yalın bir throw;, geçerli istisnayı yeniden oluşturur ve türünü korur; böylece dıştaki bir işleyici onunla ilgilenebilir.
#include <iostream>
#include <stdexcept>
void inner() { throw std::runtime_error("deep"); }
void middle() {
try { inner(); }
catch (...) { std::cout << "logged\n"; throw; } // rethrow
}
int main() {
try { middle(); } catch (const std::exception& e) { std::cout << e.what() << "\n"; }
}Standart İstisna Hiyerarşisi
Standart istisnaların çoğu, what() işlevini sunan std::exception sınıfından türetilir. std::exception yakalamak hepsini yönetir.
Değerle Oluşturun, Başvuruyla Yakalayın
Geçici istisna nesnelerini değerle oluşturun; çalışma zamanı bunları güvenli bir alana kopyalar. Dilimlemeyi önlemek için başvuruyla yakalayın.
İstisnalar ve Hata Kodları
İstisnalar hata yolunu normal akıştan ayırır ve dönüş kodlarının aksine sessizce yok sayılamaz. Bunları gerçekten olağan dışı durumlara ayırın.
Yakalanmayan İstisnalar Programı Sonlandırır
Hiçbir işleyici eşleşmezse std::terminate çağrılır ve program durdurulur. Beklediğiniz istisnaları her zaman yönetin.
Hızlı Kontrol
İstisna yönetimi konusundaki anlayışınızı sınayın.
Özet
Hataları throw ile oluşturmayı, try/catch ile yönetmeyi ve yığın çözme işleminin yerel nesneleri yol boyunca nasıl yok ettiğini öğrendiniz. const& ile yakalayın, işleyicileri özelden genele sıralayın ve yalın throw; ile yeniden oluşturun.
Sıkça Sorulan Sorular
“try, catch, throw” dersi ücretsiz mi?
Evet — “try, catch, throw” 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.
“try, catch, throw” dersinde ne öğreneceğim?
Hataları özel durumlarla işleyin 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 1. dersidir.
“try, catch, throw” 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
- try, catch, throw
- Özel Durum Güvenliği
- noexcept Belirteci
- Özel Özel Durum Türleri