Hata İşleme İşleçleri
catchError ve retry ile kurtarma yapın.
Hata İşleme İşleçleri, CoddyKit'te ücretsiz bir Angular 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, Angular Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Angular Academy kursu toplamda 4 dersten oluşur.
Gözlemlenebilirlerde hatalar
Bir gözlemlenebilir hata yayınladığında sonlanır: artık değer yayınlanmaz ve hata işleyicisi çalışır. Hata işleçleri, akışı bozmak yerine kurtarmanıza, yeniden denemenize veya hataları dönüştürmenize olanak tanır.
Hata yolu
Hataları gözlemcide veya işleçlerle ele alın. Ele alınmayan bir hata aboneliğin çökmesine neden olabilir.
this.http.get('/api/data').subscribe({
next: d => console.log(d),
error: err => console.error('failed', err)
});catchError
catchError, bir hatayı yakalar ve yerine geçecek bir gözlemlenebilir döndürerek akışın sorunsuz biçimde devam etmesini sağlar.
import { catchError, of } from 'rxjs';
this.http.get('/api/data').pipe(
catchError(err => {
console.error(err);
return of([]); // fallback value
})
).subscribe(data => console.log(data));Seçmeli olarak yeniden hata oluşturma
catchError içinde hatayı inceleyebilir ve kurtarma mı yapacağınıza yoksa throwError ile hatayı yeniden oluşturacağınıza mı karar verebilirsiniz.
import { catchError, throwError, of } from 'rxjs';
source$.pipe(
catchError(err =>
err.status === 404 ? of(null) : throwError(() => err)
)
).subscribe();retry
retry(n), kaynak hata verdiğinde kaynağa en fazla n kez yeniden abone olur; geçici ağ hataları için kullanışlıdır.
import { retry } from 'rxjs';
this.http.get('/api/flaky').pipe(
retry(2) // try up to 3 times total
).subscribe(d => console.log(d));Yapılandırmayla retry
Nesne biçimi, denemeler arasına gecikme ekler (ayrıca bir geri çekilme işlevini destekler) ve sunucuyu aşırı istekle zorlamayı önler.
this.http.get('/api/flaky').pipe(
retry({ count: 3, delay: 1000 })
).subscribe(d => console.log(d));retryWhen tarzı geri çekilme
Üstel geri çekilme için delay seçeneği, her denemede giderek daha uzun gecikme uygulayan bir gözlemlenebilir döndüren işlev olabilir.
import { timer } from 'rxjs';
source$.pipe(
retry({
delay: (err, count) => timer(count * 1000)
})
).subscribe();retry sonrasında catchError
Bunları birlikte kullanın: geçici hataları yeniden deneyin, denemeler tükendiğinde ise sorunsuz bir geri dönüş sağlayın.
this.http.get('/api/data').pipe(
retry({ count: 2, delay: 500 }),
catchError(() => of([]))
).subscribe(data => console.log(data));Yerleşim önemlidir
catchError'ın akıştaki konumu kapsamı belirler. Bir switchMap içinde kullanıldığında her iç istekteki hatayı yakalar ve dış akışı canlı tutar; en sonda kullanıldığında her şeyi yakalar.
term$.pipe(
switchMap(t => this.http.get('/api?q=' + t).pipe(
catchError(() => of([])) // outer stream survives
))
).subscribe();Sessiz geri dönüş olarak EMPTY
catchError'dan EMPTY döndürmek, akışı hiçbir değer yayınlamadan tamamlar; hatayı yok saymak ve hiçbir şey yayınlamamak istediğinizde kullanışlıdır.
import { EMPTY, catchError } from 'rxjs';
source$.pipe(
catchError(() => EMPTY)
).subscribe();Temizlik için finalize
finalize, akış hangi nedenle sona ererse ersin (tamamlanma, hata veya abonelikten çıkma) bir geri çağırma işlevi çalıştırır. Yükleniyor durumunu her zaman sıfırlamak için hata işlemeyle birlikte kullanın.
import { finalize, catchError, of } from 'rxjs';
this.loading = true;
source$.pipe(
catchError(() => of([])),
finalize(() => this.loading = false)
).subscribe();Kısa Kontrol
Hata işlemeyi ne kadar anladığınızı test edin.
Özet: Hata İşleme İşleçleri
Hatalar, ele alınmadıkları sürece akışı sonlandırır.
catchError: Yerine geçecek bir gözlemlenebilir döndürerek kurtarır.retry: İsteğe bağlı gecikme veya geri çekilmeyle hata durumunda yeniden abone olur.- Yerleşim (switchMap içinde veya en sonda) kapsamı belirler.
RxJS İşleçlerini Derinlemesine başlıklı dersi tamamladınız.
Sıkça Sorulan Sorular
“Hata İşleme İşleçleri” dersi ücretsiz mi?
Evet — “Hata İşleme İşleç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 Angular Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Angular Academy kursu toplamda 4 dersten oluşur.
“Hata İşleme İşleçleri” dersinde ne öğreneceğim?
catchError ve retry ile kurtarma yapın. Angular 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.
Angular Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Angular 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 İşleç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 Angular Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Angular 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
- Dönüştürme İşleçleri
- Filtreleme İşleçleri
- Birleştirme İşleçleri
- Hata İşleme İşleçleri