Stream error
- Dart kursu
- İleri seviye
- Ders 16/83
- 5 dk
Stream error ve onError öğrenirsin.
Stream hataları
Bir stream, normal öğelerin yanında hata olayları da yayınlayabilir. Hata yayınlandığında stream normalde kapanır; sonraki öğeler gelmez.
Dinleyicide onError ile ya da try/catch ile yakalanır. .handleError(fn) transformer'ı hataları yakalayıp akışı devam ettirir.
Örnek: Stream.error('boom').listen(print, onError: (e) => print('hata: $e'));. Hata onError'e gider, print hiç çağrılmaz.
try/catch ile await for
await for ile stream tüketilirken hata fırlatıldığında, normal try/catch ile yakalanır. Stream kapanır, döngü sonlanır.
Örnek: try { await for (var x in Stream.error('boom')) print(x); } catch (e) { print('hata: $e'); }. Hata yakalanır, 'hata: boom' yazdırılır.
Bu yöntem senkron hata yakalamaya benzer; async akışta da aynı görünümdedir.
Uygulama Stream hatasını yakala
main'i async yap. try { await Stream.error('boom').forEach(print); } catch (e) { print('hata: $e'); } bloğunu ekle.
Başlangıç kodu
void main() {
// async yap; hata yayınlayan stream'ı try/catch ile sar
}Örnek çözüm
void main() async {
try {
await Stream.error('boom').forEach(print);
} catch (e) {
print('hata: $e');
}
}Beklenen çıktı
hata: boom
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Hata yayınlandığında ne olur?
- Stream devam eder
- Hata yok sayılır
- Program çöker
- Stream normalde kapanır Doğru cevap
Açıklama: hata yayınlandığında stream normalde kapanır.
2 Hata işleme yolları
| Kavram | Anlamı |
|---|---|
onError |
Dinleyici parametresi |
try/catch |
await for ile |
.handleError |
Transformer |
.toList |
Sonlandırıcı |
3 Hata işleyici metodu
var t = s.____((e) => print('hata'));
var t = s.handleError((e) => print('hata'));
Açıklama: handleError transformer'ı hataları yakalar.