Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
JavaScript hatası, kodun tarayıcı veya JavaScript çalışma ortamı tarafından beklenen şekilde yorumlanamaması ya da çalıştırılırken bir işlemi tamamlayamamasıdır. Hata oluştuğunda kodun ilgili bölümü durabilir; bu nedenle sayfadaki butonun çalışmaması, verinin ekrana gelmemesi veya uygulamanın beklenmedik davranması gibi sonuçlar görülebilir. Hatanın ayrıntıları genellikle tarayıcının geliştirici araçlarındaki Console sekmesinde görünür.

Bir hata mesajı çoğunlukla hata türünü, açıklamasını ve dosya ile satır konumunu içerir. Örneğin ReferenceError: userName is not defined mesajı, userName adlı değişkenin tanımlanmadan kullanılmaya çalışıldığını gösterir. Mesajdaki dosya ve satır bilgisi, incelemeye başlanacak yeri belirtir; her zaman hatanın asıl nedeninin yalnızca o satır olduğu anlamına gelmez.

JavaScript hata türleri​


Sözdizimi hatası​


Kodun yazım kuralları bozuktur. Eksik parantez, kapatılmamış tırnak veya hatalı ifade buna örnektir. Kod çoğunlukla çalışmaya başlamadan önce durur.

Kod:
const message = "Merhaba;
console.log(message);

Bu örnek, hatayı göstermek için bilerek geçersiz yazılmıştır. Tırnak kapatılmadığı için JavaScript kodu doğru biçimde ayrıştıramaz.

Çalışma zamanı hatası​


Kod sözdizimi bakımından geçerli olduğu hâlde çalışırken hata verir. Tanımsız bir değişkeni kullanmak ReferenceError, uygun olmayan bir değer üzerinde işlem yapmak TypeError oluşturabilir.

Kod:
const user = null;
console.log(user.name);

Bu da bilerek hata üreten bir örnektir. Burada user değeri null olduğu için name özelliğine erişilemez.

Mantık hatası​


Kod hata mesajı vermeden çalışır; ancak sonuç yanlıştır. Örneğin toplam hesaplanırken çıkarma işlemi kullanılması veya koşulun ters yazılması mantık hatasıdır. Bu tür sorunlarda Console boş olabilir; değişken değerlerini console.log() ile kontrol etmek gerekir.

Aşağıdaki karşılaştırma, Console mesajını yorumlarken hangi yönden ilerlemeniz gerektiğini gösterir.
Hata türüNe zaman ortaya çıkar?İlk kontrol
SözdizimiKod ayrıştırılamadığındaParantez, tırnak ve virgüller
Çalışma zamanıKod çalışırken işlem başarısız olduğundaHata satırı ve değişken değerleri
MantıkKod çalışıp yanlış sonuç ürettiğindeKoşullar, hesaplama ve beklenen sonuç

Hata nasıl bulunur ve yorumlanır?​

  1. Tarayıcıda geliştirici araçlarını açın ve Console sekmesine geçin. Kırmızı hata satırındaki mesajı ve dosya-satır konumunu okuyun.
  2. Mesajdaki hata türünü belirleyin. SyntaxError, ReferenceError ve TypeError farklı nedenlere işaret eder.
  3. Hata satırındaki değişkenleri kontrol edin. Değerleri görmek için geçici olarak console.log(variable) kullanın.
  4. Hatanın önceki satırlarda üretilip üretilmediğini inceleyin. Örneğin boş veya null bir değer, sonraki satırda farklı bir hata oluşturabilir.
  5. Düzeltmeden sonra sayfayı yeniden yükleyin ve aynı işlemi tekrar deneyin. Yeni hata oluşursa onu ayrı bir sorun olarak değerlendirin.
Yakalanabilir çalışma zamanı hatalarında try...catch kullanılabilir:

Kod:
try {
  const value = JSON.parse('{"name":"Ali"}');
  console.log(value.name);
} catch (error) {
  console.error(error.name, error.message);
}

Kod başarılıysa ad görüntülenir. JSON bozuk olsaydı catch bloğu çalışır ve hata adı ile açıklamasını Console'a yazardı. Aynı betiğin ayrıştırılmasını engelleyen bozuk tırnak gibi bir sözdizimi hatasını o betiğin içindeki try...catch yakalayamaz; betik çalışmaya başlamaz. Buna karşılık JSON.parse çalışırken bozuk veriden doğan SyntaxError yakalanabilir. try...catch mantık hatalarını otomatik olarak düzeltmez; yalnızca fırlatılan hatayı yakalar. Hatanın nedenini yine kodun ilgili akışında düzeltmek gerekir.

Sık yapılan hatalar​

  • Sadece hata mesajını aratıp kendi dosya ve satır bağlamını incelememek.
  • Her Console mesajını JavaScript hatası sanmak; bazı mesajlar uyarı veya geliştirici tarafından yazdırılmış console.error() çıktısı olabilir.
  • Hata satırını düzeltip verinin o satıra hangi değerle geldiğini kontrol etmemek.
  • Bir hata yakalandığında boş catch bloğu kullanmak ve asıl problemi gizlemek.

Sık sorulan sorular​


JavaScript hatası sayfanın tamamını durdurur mu?​


Her zaman değil. Hatanın bulunduğu kod akışı durabilir; diğer bağımsız kodlar çalışmaya devam edebilir. Ancak başlangıç kodunda oluşan bir hata, uygulamanın büyük bölümünün başlatılamamasına yol açabilir.

Bir Promise hatasını normal try...catch neden yakalamaz?​


Asenkron işlem, çevresindeki eşzamanlı blok tamamlandıktan sonra reddedilebilir. Bir async fonksiyonda Promise'i try içinde await etmek veya zincire .catch() eklemek gerekir. Yalnızca işlemi başlatan çağrıyı senkron try içine almak sonraki reddi yakalamaz.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic