CodeBlanks Logo Icon CodeBlanks

Hata durumlarını yönetme

JavaScript kursu · Başlangıç · Ders 28/133

Bölme hatası ve geçersiz operatör için korumayı eklersin.

Hata durumları: isNaN ile doğrulama

Kullanıcı bir sayı yerine harf girerse ne olur? parseFloat("merhaba") NaN döndürür — yani 'Not a Number'. NaN ile yapılan matematik yine NaN verir, bu yüzden sonucu kontrol etmeliyiz.

isNaN(değer) fonksiyonu bir değerin sayı olup olmadığını söyler: sayı değilse true, sayıysa false döner. Bunu bir if koşulunda kullanırız.

İki sayıyı da kontrol etmek için || (veya) operatörü ile birleştiririz: if (isNaN(first) || isNaN(second)). Geçersizse result'a hata mesajı koyarız.

if/else ile akış kontrolü

Doğrulama başarısız olursa hesaplama yapılmamalıdır. Bunu if/else ile sağlarız: if koşulu geçersiz girişi yakalar, else bloğu ise geçerliyse switch'i çalıştırır.

Böylece switch yalnızca her iki sayı da geçerliyken çalışır. Hata durumunda result zaten hata mesajına ayarlıdır ve switch atlanır.

Sonuç her iki yolda da result değişkenine yazılır, bu yüzden en son tek bir console.log her durumu kapsar.

Uygulama isNaN ile giriş doğrulama ekle

Mevcut kod switch ile hesaplıyor ama geçersiz girişleri kontrol etmiyor. switch'i bir if/else içine al. Önce if (isNaN(first) || isNaN(second)) ile iki sayıyı doğrula; geçersizse result'a bir hata mesajı ata. Geçerliyse mevcut switch else bloğunda çalışsın. En son console.log sonucu yazdırsın.

Örnek çözümü göster
// Kullanıcının girdiği ilk değer
const firstInput = "25";
const operator = "+";
const secondInput = "4";
const first = parseFloat(firstInput);
const second = parseFloat(secondInput);

let result;

if (isNaN(first) || isNaN(second)) {
  result = "Hata: geçerli bir sayı girin";
} else {
  switch (operator) {
    case "+":
      result = first + second;
      break;
    case "-":
      result = first - second;
      break;
    case "*":
      result = first * second;
      break;
    case "/":
      result = first / second;
      break;
    default:
      result = "Bilinmeyen işlem";
  }
}

console.log("Sonuç: " + result);

Kendini test et

  1. Aşağıdakilerden hangisi NaN döndürür?

    parseFloat("merhaba")
    • parseFloat("42")
    • Number("3.14")
    • parseFloat("100 metre")
    • parseFloat("merhaba")
    Cevabı göster

    parseFloat("merhaba") — Doğru. 'merhaba' sayıya çevrilemediği için NaN döner.

  2. if koşulunu tamamla

    ____
      result = "Hata: geçerli bir sayı girin";
    }
    Cevabı göster
    if (isNaN(first) || isNaN(second)) {
      result = "Hata: geçerli bir sayı girin";
    }
  3. Doğrulama kavramlarını eşleştir

    isNaN
    Değerin sayı olmadığını kontrol eder
    NaN
    Geçersiz sayı işleminin sonucu
    parseFloat
    String'i ondalık sayıya çevirir
    ||
    Mantıksal VEYA

Başlangıç bölümündeki tüm dersler