Çoklu catch desenleri
Bir catch bloğu içinde hata türüne göre farklı işlemler yapmayı öğrenirsin.
Tek catch, çoklu desen
JavaScript'te birden çok catch bloğu yazamazsın; tek bir catch içinde instanceof ile hata türüne göre dallanırsın. Her tür için ayrı bir işleyici yazarsın.
try {
parseInput(raw);
} catch (err) {
if (err instanceof SyntaxError) {
showFormatError(err);
} else if (err instanceof RangeError) {
showRangeError(err);
} else {
throw err;
}
} Bilinmeyen hataları bırakmak
Bir catch bloğunda tanımadığın hata türlerini genele bırakmak en güvenli yoldur. else dalında hatayı tekrar fırlat ya da merkezi bir yakalayıcıya bırak. Bilinmeyen bir hatayı sessizce yutmak hata ayıklamayı zorlaştırır.
Tanıdık türleri işle, gerisini çağırana ilet. Bu, beklenmedik durumların kaybolmasını önler.
Uygulama Çoklu desenli hata işleyici
handleError adlı fonksiyon error parametresi alsın. error instanceof ValidationError ise showFormError(error) çağırsın; error instanceof NetworkError ise showRetry(error) çağırsın; değilse throw error ile hatayı tekrar fırlatsın.
Örnek çözümü göster
function handleError(error) {
if (error instanceof ValidationError) {
showFormError(error);
} else if (error instanceof NetworkError) {
showRetry(error);
} else {
throw error;
}
}
Kendini test et
-
Bir catch bloğunda ValidationError hatasını nasıl ayırt edersin?
- if (err.name = 'ValidationError')
- if (err.type === ValidationError)
- if (err instanceof ValidationError)
- if (err.is(ValidationError))
Cevabı göster
if (err instanceof ValidationError) — Doğru! instanceof, hata türünü güvenle denetler.
-
instanceof ile tür denetimi
if (err ____ ValidationError) { showFormError(err); }Cevabı göster
if (err instanceof ValidationError) { showFormError(err); } -
Yerleşik hata türlerini eşleştir
- SyntaxError
- Sözdizimi hatası
- RangeError
- Aralık dışı değer
- TypeError
- Yanlış tür
- ReferenceError
- Tanımsız değişken