Error vs Exception
- Dart kursu
- Orta seviye
- Ders 101/116
- 5 dk
Error ve Exception farkını öğrenirsin.
Error vs Exception
Dart'ta iki tür sorun vardır: Error ve Exception. Karıştırılmamaları gerekir; doğru ayrım sağlam hata yönetiminin temelidir.
Error (ör. StateError, RangeError) programcının hatasıdır; kurtarılamaz ve yakalanmamalı. Kodu düzeltmen gerekir.
Exception (ör. FormatException, TimeoutException) çalışma zamanı koşuludur; kurtarılabilir ve try/catch ile yakalanır.
Error'ı yakalama
Bir Error'ı try/catch ile yakalamak genelde yanlış bir uygulamadır. Error, kodunda düzeltmen gereken bir hatadır; yakalamak hatayı gizler.
Bunun yerine Exception'ı yakala: try { ... } on Exception catch (e) { ... }. Bu, beklenen çalışma zamanı koşullarını ele alır.
Programında Error fırlatıyorsa, kaynağı düzelt; yakalamaya çalışma.
Uygulama FormatException yakala
int parseAge(String s) => int.parse(s); fonksiyonunu yaz. main içinde parseAge('abc') çağır; on FormatException catch (e) ile yakala ve print('geçersiz yaş') yazdır.
Başlangıç kodu
// parseAge fonksiyonunu tanımla
void main() {
// parseAge('abc') çağır, FormatException yakala
}Örnek çözüm
int parseAge(String s) => int.parse(s);
void main() {
try {
parseAge('abc');
} on FormatException catch (e) {
print('geçersiz yaş');
}
}Beklenen çıktı
geçersiz yaş
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 NetworkError sınıfı
class NetworkError extends ____ { final String host; NetworkError(this.host); }
class NetworkError extends Error { final String host; NetworkError(this.host); }
Açıklama: NetworkError bir Error alt sınıfıdır.
2 Hangisi Error alt sınıfıdır?
- FormatException
- TimeoutException
- FileSystemException
- StateError Doğru cevap
Açıklama: StateError extends Error. Diğerleri Exception alt sınıfıdır.
3 Error vs Exception karşılaştırma
| Kavram | Anlamı |
|---|---|
Error |
Programcı hatası |
Exception |
Çalışma zamanı koşulu |
StateError |
Error alt sınıfı |
FormatException |
Exception alt sınıfı |