CodeBlanks Logo Icon CodeBlanks

Çoklu catch desenleri

JavaScript kursu · Orta seviye · Ders 102/134

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

  1. 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.

  2. instanceof ile tür denetimi

    if (err ____ ValidationError) {
      showFormError(err);
    }
    Cevabı göster
    if (err instanceof ValidationError) {
      showFormError(err);
    }
  3. 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

Orta seviye bölümündeki tüm dersler