Programlama hataları kaçınılmazdır. Er ya da geç, uygulamanız bazı beklenmedik davranışlarla karşılaşacaktır. Diğer herhangi bir programlama dili gibi, JavaScript de kodunuzda bir şeyler ters gittiğinde hatalara neden olur.
Hatalar, bir uygulamanın normal akışını bozar. Ancak, uygulamanızı öngörülemeyen davranışlardan korumaya da yardımcı olurlar. Hataların nasıl düzgün bir şekilde ele alınacağını bilmek çok önemlidir.
Hata İşleme Neden Önemlidir?
Hata işleme, gelişmiş bir kullanıcı deneyimine katkıda bulunur. JavaScript'in varsayılan ve bazen ayrıntılı hatalarını, kendi insan tarafından daha okunabilir hata mesajlarıyla değiştirebilirsiniz. Bazı hataların nedenlerini incelikle halledebilir ve programınızı bırakmak yerine çalışır durumda tutabilirsiniz.
Hata işleme, geliştirme sırasında da yararlıdır. Bir çalışma zamanı hatası yakalayabilir ve onunla yararlı bir şey yapabilirsiniz, örneğin tarayıcı konsoluna günlüğe kaydetme. Bu, bir çökmeye neden olan hatadan ve hatanın nerede veya neden oluştuğunu bilmemekten daha zariftir.
JavaScript Yerleşik Hatalarının Yapısı
JavaScript'in hataları, üç özelliği olan nesnelerdir:
- isim: Bu, hatanın adıdır. Örneğin, eksik bir değişken adı SyntaxError adlı bir hata verir.
- İleti: Bu, mesajın gövdesidir ve hatayı metinsel olarak açıklar.
- neden: Çağrı yığınını takip etmek için bu özelliği özel hatalarla kullanabilirsiniz.
JavaScript'te Yaygın Hata Türleri
İşte JavaScript'te bulunan bazı yaygın hatalar.
Sözdizimi hatası
JavaScript kodunuzu yorumlamaya çalıştığında sözdizimi hataları oluşabilir. Kodunuz doğru sözdizimine uymuyorsa bir hata oluşturur. Sözdizimi hatalarını artırabilecek bazı yaygın hatalar şunlardır:
- Değişken adları eksik.
- Bir işlevden sonra “}” eksik.
- Bir koşuldan sonra “)” eksik.
Referans Hatası
Bir program denemeye çalıştığında referans hataları oluşur. bir değişkene referans vermek bu kullanılamaz veya kapsam dışıdır.
TipHata
JavaScript, beklediği tür aldığından farklı olduğu için bir işlem gerçekleştiremediğinde bir tür hatası verebilir.
URIE hatası
Bu hata, decodeURIComponent() gibi bir global URI işleme işlevini yanlış kullanırsanız oluşur. Sonuç olarak, kodlama veya kod çözme başarısız olur.
ToplamaHatası
Bu hata, bire sarılmış birden çok hatayı temsil etmek için kullanılır. Aynı anda birçok hatayı atmak istediğinizde kullanın. Örneğin, kendisine iletilen tüm sözler reddedildiğinde, Promise.any() bir AggregateError() atabilir.
İç hata
JavaScript motorunun içinde bir hata oluştuğunda bir InternalError atılır.
AralıkHatası
Bazı işlevler, bağımsız değişken olarak iletebileceğiniz değer aralığını belirler. Bu hata, o aralığa dahil olmayan bir değeri iletmeye çalıştığınızda oluşur.
Deneme ile Hata İşleme... Yakalama Bloğu
JavaScript, yerleşik istisna işleme işlevselliği sağlar. dene… yakala… sonunda engellemek. Ayrıca, kullanarak kendi hatalarınızı yükseltmenizi sağlar. atmak Şebeke.
Çalışma zamanı sırasında oluşan hataları işlemek için bir try…catch bloğu kullanabilirsiniz. Try bloğuna doğru şekilde yürütülmesini beklediğiniz geçerli bir kod yazarsınız. Catch bloğuna hata işleme kodu yazabilirsiniz.
denemek {
// Geçerli Javascript kodu
} tutmak (hata) {
// Hatayı işle
} en sonunda {
// Bir hata oluştuğunda bile yürütülür
}
Try bloğundaki kod herhangi bir hata oluşturmazsa, yakalama bloğu yok sayılır. Bir hata oluşturursa, yürütme yakalama bloğuna atlar. Nihayet bloğundaki kod, bir hata olsa da olmasa da çalışır. Bu blok zorunlu değildir, bu yüzden ihtiyacınız yoksa atlayın.
Try bloğuna eklediğiniz kod geçerli olmalıdır. Değilse, JavaScript bir ayrıştırma hatası verir.
Pratik bir örneğe bakalım:
denemek {
konsol.log (metin)
} tutmak (hata) {
konsol.kayıt(hata.İleti)
} en sonunda {
konsol.log("Ne olursa olsun yürütülecek")
}
Bu program, metin değişkeninin değerini günlüğe kaydetmeye çalışır. Bu değişken tanımlı olmadığı için program hata verecektir. Bu hata, konsolda catch bloğunda yazdırılır. Son blok daha sonra çalışır ve kendi mesajını yazdırır.
Referans Hatası: metin tanımlı değil
Ne olursa olsun yürütülecek
Kendi hatanızı oluşturmanız gereken durumlarda, atmak Şebeke.
Veriler yanlışsa hata veren bu örneği düşünün:
const veri = getData()
denemek {
if (!veri) {
atmak "Veri yok"
}
konsol.log (veri)
// devam et
} tutmak(hata) {
konsol.log (hata) // "Veri yok"
}
Bu örnekte, program getData() işlevini çağırır ve sonucunu veri değişkenine atar. Try bloğunda, veriler boşsa blok özel bir hata verir. Catch bloğu bu hatayı yakalar ve konsola kaydeder.
Geliştirme sırasında hata atmak çok faydalıdır. Uygulamanızın neden beklendiği gibi çalışmadığını anlamak için özel hata mesajını kullanabilirsiniz.
Bu örnekte gösterildiği gibi, hata nesnesi için bir dize kullanabilirsiniz. Aslında herhangi bir JavaScript ifadesini hata olarak atabilirsiniz. Ancak, yerleşik hatalarla tutarlılık adına, bir ad ve mesaj içeren bir JavaScript nesnesi kullanın.
atmak {
isim: "Hata adı",
İleti: "Hata mesajı"
}
Hataları atarken JavaScript'in yerleşik yapıcılarını da kullanabilirsiniz. Bu kurucular arasında Error, SyntaxError ve ReferenceError bulunur.
Error yapıcısını kullanarak bir hata atmak için şu kodu kullanın:
atmakyeniHata("Veri yok")
Artık isim ve mesaja başvurabilirsiniz.
konsol.log (hata.adı) // Hata
konsol.log (hata.mesajı) // Veri yok
JavaScript Hata Nesnesini Genişletme
JavaScript tarafından zaten sağlanan nesnelere karşılık gelmeyen hataları işlerken özel bir hata sınıfı kullanışlı olur. Örneğin, bir veri doğrulama hatasını ValidationError adlı belirli bir tür olarak yalıtmak isteyebilirsiniz.
kullanabilirsiniz JavaScript ES2015 sınıfı özel bir hata sınıfı oluşturmak için.
sınıfDoğrulama HatasıuzanırHata{
kurucu(İleti) {
Süper(İleti);
this.name = "Doğrulama Hatası";
}
}
ValidationError sınıfını kullanarak şöyle bir hata atın:
atmakyeni ValidationError("Hata mesajınız")
Atılan hata, isim ve mesaj değerlerine sahip bir nesne olacaktır.
{
isim: "Doğrulama Hatası",
İleti: "Hata mesajınız"
}
Hatalar Yardımcı Olur
Hangi dili kullanırsanız kullanın, hata işleme, programlamanın temel bir parçasıdır. JavaScript, istisnalar tarzındaki hataları yükseltmek ve yakalamak için harika bir desteğe sahiptir. Ayrıca, işleyebileceğiniz ve kendi vakalarınız için kullanabileceğiniz çeşitli yerleşik hata türleri vardır.
JavaScript'i "özensiz modda" yazarken sözdizimi hataları gibi bazı hatalar algılanmayabilir. Katı modun kullanılması, JavaScript'in aksi takdirde göz ardı edeceği hataları yakalamasına olanak tanır.