JavaScript’teki Hataları İşleme Kesin Kılavuz
Murphy yasası, yanlış olabilecek her şeyin nihayetinde yanlış olacağını belirtiyor. Bu, programlama dünyasında biraz fazla iyi uygulanır. Bir uygulama oluşturursanız, büyük olasılıkla hatalar ve diğer sorunlar elde edersiniz. JavaScript’teki hatalar böyle ortak sorunlardan biridir!
Yazılım ürünlerinin başarısı, üreticinin kullanıcılarına zarar vermeden önce bu sorunun üstesinden ne kadar iyi olabileceğine bağlıdır. Ve tüm programlama dillerinin JavaScript, ortalama hata işleme tasarımı ile ünlüdür. Bir JavaScript uygulaması oluşturuyorsanız, veri türünü bir noktada veya başka bir şekilde bozacağınız yüksek bir olasılık vardır. Bu değilse, NULL operatör veya üçlü eşit (===) ile tanımsız çift eşit (==) operatörü ile değiştirebilirsiniz.
Hata yapmak sadece insan. Bu yüzden size JavaScript’teki hatalar hakkında bilmeniz gereken her şeyi göstereceğiz. Bu makale, JavaScript’teki temel hatalar boyunca size rehberlik edecek ve bulabileceğiniz çeşitli hataları açıklayacaktır. Daha sonra bu hatanın nasıl tanımlanacağını ve düzeltileceğini öğreneceksiniz. Üretim ortamında hatalarla etkili bir şekilde başa çıkmak için bazı ipuçları da vardır. Daha fazla uzatmadan başlayalım!
JavaScript’in hatası nedir? Programlamadaki hatalar, programın normal şekilde çalışmasına izin vermeyen durumları ifade eder. Bu, bir program mevcut çalışmayı nasıl ele alacağını bilmediğinde, örneğin ağ bağlantısı olmadığında web tabanlı bir yangının bitiş noktasına ulaşmaya çalışırken olduğu gibi, mevcut çalışmayı nasıl ele alacağını bilmediğinde olabilir.
Bu durum, programı, nasıl devam edeceğini bilmediğini belirterek kullanıcıya hata vermeye teşvik eder. Program hatalar hakkında mümkün olduğunca fazla bilgi toplar ve daha sonra devam edemeyeceğini bildirir. Murphy Yasası, sonunda yanlış olabilecek her şeyin yanlış olacağını belirtiyor Bu, JavaScript dünyasında biraz fazla iyi, bu kılavuzla hazırlık alın Bu senaryoyu tahmin etmeye ve örtmeye çalışırken, kullanıcıların bulmaları gerekmez. “404” bağımsız gibi teknik hata mesajları. Tersine, “Sayfa bulunamaz.” Bu nesne, hata türü, hatalara neden olan ifadeler ve hatalar meydana geldiğinde kazıkları izleme hakkında çok fazla bilgi içerir. JavaScript ayrıca programcıların hata ayıklama problemleri sırasında ek bilgi sağlamak için özel hatalar yapmalarını sağlar. JavaScript hatasının geçerli hata tanımından elde edilen özellik açıktır, ayrıntılara dalma zamanı. JavaScript’teki hatalar, hataların nedenlerini ve etkilerini anlamaya yardımcı olan belirli standart ve özel özellikler getirir. Varsayılan olarak, JavaScript’teki hatalar üç özellik içerir:
Mesaj: Bir hata mesajı taşıyan dize değeri
İsim: oluşan hata türü (bir sonraki bölümde daha derinden tartışacağız)
Yığın: Hatalar meydana geldiğinde yürütülen kod yığınlarının parçaları.
Buna ek olarak, hataları daha iyi açıklamak için hatalar Columnnnumber, Linenumber, dosya adı vb. Gibi mülkler de getirebilir. Ancak, bu özellik standart değildir ve JavaScript uygulamanızdan üretilen her hata nesnesinde mevcut olabilir veya mevcut olmayabilir. Kazık izlerinin izlerini anlamak, istisnalar veya uyarılar gibi olaylar meydana geldiğinde program çağırma yöntemlerinin bir listesidir. Bu, bir istisnanın eşlik ettiği bir kazık izinin örneğidir: bir kazık patikası örneği. Gördüğünüz gibi, adları ve hata mesajlarını yazdırma, ardından denilen yöntemlerin bir listesi ile başlar. Yöntemin her çağrısı, kaynak kodunun yerini ve çağrıldığı çizgiyi belirtir. Kod tabanınızda gezinmek ve kodun hangi kısmının hatalara neden olduğunu belirlemek için bu verileri kullanabilirsiniz. Bu yöntem listesi bir şekilde düzenlenmiştir. Bu, istisnanızın ilk nereye atıldığını ve çağrı yöntemiyle nasıl yayıldığını gösterir. Yakalamayı istisnalar için uygulamak, bir kazıktan yayılmasına ve programınıza zarar vermesine izin vermez. Bununla birlikte, çeşitli senaryolarda kasıtlı olarak bir çarpışma programı oluşturmak için yakalanmamasına izin vermek isteyebilirsiniz.
Hata ve İstisnalar Çoğu insan genellikle hataları ve istisnaları aynı olarak kabul eder. Bununla birlikte, aralarında biraz temel fark kaydetmek önemlidir. İstisnalar, atılan hata nesnesidir. Bunu daha iyi anlamak için kısa bir örnek alalım. Bu, JavaScript’teki hataları tanımlama şeklinizdir: const yanlış thyerror = typeerror (“yanlış tür, beklenen karakter”) ve bu, yanlış tipin istisna haline geldiği nesne: Yanlış tipterror “yanlış tür bulundu, beklenen karakter”) standart bir uygulama . Ancak, geliştiricilerin istisnaları ve hataları karıştırma eğiliminde olmasının nedenlerinden biri budur. Bu nedenle, işinizi hızlı bir şekilde tamamlamak için Steno kullansanız bile temel bilgileri bilmek çok önemlidir. JavaScript’teki Hata Türleri JavaScript’te önceden belirlenmiş çeşitli hata türleri vardır. Programcı uygulamadaki hataları her açıkça ele almadığında, çalışma zamanı JavaScript tarafından otomatik olarak seçilir ve belirlenir.
Dizi yapıcısı aracılığıyla yasadışı uzunlukta bir dizi yapmaya çalışmak.
Kötü değerleri toExponential (), toprection (), tofixed () vb. Gibi sayısal yöntemlere aktarmak
Normalize () gibi dize işlevlerine yasadışı değerler.
REFERANSECERROR REFERANSError, kodunuzda değişken referanslarla ilgili bir sorun olduğunda oluşur. Kullanmadan önce değişkenin değerini belirlemeyi unutabilirsiniz veya kodunuzda erişilemeyen değişkenleri kullanmaya çalışabilirsiniz. Bununla birlikte, kazık izleri, yanlış değişkenlerin referanslarını bulmak ve geliştirmek için çok fazla bilgi sağlar.
ReferanserRors’ın ortaya çıkmasının bazı yaygın nedenleri:
Değişken adında tipik bir hata yapın.
Kapsam dışındaki blokların kapsamına erişmeye çalışın.
Yüklemeden önce harici kütüphanelerin (jQuery’den $ gibi) küresel değişkenlerine bakın.
Sözdizimi hatası Bu hata, kod sözdiziminde bir hata gösterdiğinden düzeltilmesi en basitlerinden biridir. JavaScript yorumlanmış ve derlenmemiş bir komut dosyası dili olduğundan, uygulama hatalar içeren komut dosyalarını yürüttüğünde atılır. Derlenmiş dil durumunda, derleme sırasında hata tanımlanır. Böylece, bu onarılana kadar ikili uygulama yapılmaz. Sözdexerrors’un ortaya çıkabilmesinin bazı yaygın nedenleri: Ters koma kayıp
Kapanış parantezleri gitti
Kurahah Kurungah Kurungan veya diğer uygunsuz karakterler
Bu, tarayıcıya ulaşmadan önce sizin için hatayı tanımlamak için fikrinizde bir yuvarlanma aracı kullanmak için iyi bir uygulamadır. TypeError TypeError, JavaScript uygulamasındaki en yaygın hatalardan biridir. Bu hata, bazı değerler bazı beklenen tür türlerine dönüşmediğinde yapılır. Olduğunda bazı yaygın durumlar şuydu:
Yöntem olmayan nesneleri çağırmak.
Null nesnelerinin özelliğine veya tanımsız özelliğine erişmeye çalışmak
Dizeleri sayı olarak ele alın veya tam tersi
TypeError’un meydana gelebileceği daha fazla olasılık vardır. Daha sonra bazı ünlü örnekleri göreceğiz ve bunları nasıl düzelteceğini öğreneceğiz. Dahili hatalar, JavaScript çalışma zamanı makinesinde istisna meydana geldiğinde kullanılır. Bu, kodunuzla ilgili sorunlar gösterebilir veya göstermeyebilir. Çoğu zaman, InternorRor sadece iki senaryoda gerçekleşir:
Çalışma zamanı JavaScript için yamalar veya güncellemeler istisnalara neden olan bir hata taşıdığında (bu çok nadirdir)
Kodunuz, JavaScript makineleri için çok büyük bir varlık içerdiğinde (örneğin çok fazla anahtar vakası, dizi başlatma çok büyük, çok fazla özyineleme) Bu hatanın üstesinden gelmek için en uygun yaklaşım, hatayı hata mesajları yoluyla tanımlamak ve yeniden düzenlemektir. Bir JavaScript makinesinde iş yükünde ani bir artışı ortadan kaldırmak için uygulamanızın mantığı. Urierror URI hataları, Decodeuricomponent gibi global URI işleme işlevi yasadışı olarak kullanıldığında ortaya çıkar. Bu genellikle yöntemin çağrılarına iletilen parametrelerin URI standartlarına uygun olmadığını ve bu nedenle yöntem tarafından doğru bir şekilde tanımlanmadığını gösterir. Bu hatayı teşhis etmek genellikle kolaydır, çünkü yalnızca malformasyonlar için argümanı kontrol etmeniz gerekir. Değerlendirme değerlendirme hataları, değerlendirme işlevini () çağırarak bir hata oluştuğunda meydana gelir. Değerlendirme işlevi (), bir dizede depolanan JavaScript kodunu yürütmek için kullanılır. Bununla birlikte, ECMascript’in güvenlik sorunları ve özellikleri artık değerlendirmediği için değerlendirme işlevini () kullanmak önerilmediğinden, artık değerlendirme sınıfını imha etmediğinden, bu tür hata sadece eski JavaScript koduyla istifa uyumluluğunu korumak için mevcuttur. JavaScript’in eski sürümü üzerinde çalışıyorsanız, bu hatayı deneyimleyebilirsiniz. Ancak, herhangi bir istisna için değerlendirme işlev çağrısı () ‘da yürütülen kodu araştırmak en iyisidir. Özel bir hata türü yapma JavaScript, çoğu senaryoyu kapsayacak kadar yeterli hata sınıflarının bir listesi sunsa da, liste gereksinimlerinizi karşılamıyorsa her zaman yeni bir hata türü oluşturabilirsiniz.
Bu esnekliğin temeli, JavaScript’in atış komutuyla tam anlamıyla bir şey atmanıza izin vermesidir. Bu nedenle, teknik olarak, bu ifade tamamen geçerlidir: 8 -“Bir hata oluştu”, ancak ilkel veri türlerinin atmak, ona eşlik eden tür, ad veya izleme yığınları gibi hatalar hakkında ayrıntılar sağlamaz. Düzeltmek ve hataları işleme işlemini standartlaştırmak için hata sınıfı sağlanmıştır. İstisnalar atarken ilkel veri türlerinin kullanılması da önerilmez. Özel hata sınıfınızı oluşturmak için hata sınıfını genişletebilirsiniz. İşte bunu nasıl yapabileceğinizin temel bir örneği: Class validationError Hatayı genişletir {Constructor (Message) {Super (Message); this.name = “validationerror”; }} Ve aşağıdaki şekilde kullanabilirsiniz: validationError (“Bulunamadı: Name”) atın ve daha sonra örnekfof anahtar kelimesini kullanarak tanımlayabilirsiniz: deneyin {validateForm () // bir validationerror} catch (e kodu (e kodunu atan kod ) {if (e instanceof validationerror) // başka bir şey yapın // başka bir şey yapın} Javascript’teki 10 en yaygın hata, ortak hata türlerini ve nasıl özel hatalar yapacağınızı anladıktan sonra, en çok bazılarını görmenin zamanı geldi Kodu JavaScript yazarken karşılaşacağınız yaygın hatalar. 1. RangeError yakalanmadı Bu hata Google Chrome’da çeşitli senaryolarda meydana geldi. İlk olarak, özyinelemeli işlevi çağırırsanız ve durmazsanız bu olabilir. Chrome geliştirici konsolunda kendiniz kontrol edebilirsiniz:
Özyinelemeli işlevsel olan RangeError örnekleri. Bu tür hataların üstesinden gelmek için, özyinelemeli işlevinizin sınır durumunu doğru bir şekilde tanımladığınızdan emin olun. Bu hatanın gerçekleşmesinin bir başka nedeni de, işlev parametreleri aralığının dışındaki değeri geçmenizdir. Aşağıdakiler bir örnek: toExponential () çağrıları olan RangeError örnekleri. Hata mesajları genellikle kodunuzda neyin yanlış olduğunu gösterir. Bir değişiklik yaptıktan sonra tamamlanacak.
To To To To To To To To To To To To To To Call () için çıktı. 2. TypeError yakalanmadı: Özelliği ayarlanamıyor Bu hata, özelliği belirtilmemiş bir referansla ayarladığınızda meydana gelir. Sorunu şu kodla yeniden üretebilirsiniz: var List.Count = 0 Bu alacağınız çıktı:
TypeError örnekleri. Bu hatayı düzeltmek için, özelliklerine erişmeden önce referansların değerlerle başlatılması. Bu onarıldığında görünür:
TypeError nasıl düzeltilir. 3. TypeError yakalanmadı: Bu özellik okuyamıyorum JavaScript’teki en yaygın hatalardan biridir. Bu hata, dayanıksız bir nesnedeki özelliği veya çağrı işlevlerini okumaya çalıştığınızda oluşur. Çıktıyı takip eden Chrome Geliştirici Konsolunda aşağıdaki kodu çalıştırarak çok kolay çoğaltabilirsiniz: var func func.call ():
Belirtilmemiş bir işlevi olan TypeError örnekleri. Belirlenmeyen nesneler, bu hatanın birçok olası nedeninden biridir. Bu sorunun bir diğer önemli nedeni, UI oluştururken uygun olmayan durumun başlatılmasıdır. İşte React uygulamasının gerçek bir dünyasının bir örneği: “React” den {usestate, useffect} ithalat reaksiyonu; const cardsList = () => {const [durum, setState] = usestate (); Useffect (() => {setTimeout (() => setState ({öğeler: [“kart 1”, “kart 2”]}), 2000);}, []); return ( {State.Items.map ((öğe) => (
{item}
))} ); }; Varsayılan kartlar listesini dışa aktarın; Uygulama boş bir durum kap ile başlar ve 2 saniyelik bir gecikmeden sonra birkaç öğe ile donatılmıştır. Ağ çağrılarını taklit etmek için gecikme yapılır. Ağınız süper hızlı olsa bile, bileşenler en az bir kez oluşturulacağı için hala küçük bir gecikme ile karşılaşacaksınız. Bu uygulamayı çalıştırmaya çalışırsanız, aşağıdaki hataları alacaksınız: tarayıcıdaki Typerror yığınlarının izleri. Bunun nedeni, oluşturulma sırasında durum kabı belirlenmemesidir; Bu nedenle, üzerinde hiçbir mülk kalemi yoktur. Bu hatayı onarmak kolaydır. Yalnızca ilk varsayılan değeri durum kapsayıcısına vermeniz gerekir. // … const [durum, setState] = usestate ({öğeler: []}); // … Şimdi, belirtilen gecikmeden sonra, uygulamanız benzer çıktılar görüntülenecektir:
Kod çıkışı. Kodunuzdaki doğru iyileştirme farklı olabilir, ancak buradaki nokta, kullanmadan önce değişkenlerinizi her zaman doğru bir şekilde başlatmaktır. 4. TypeError: ‘tanımsız’ Bu hatanın nesnesi, mülke erişmeye çalıştığınızda veya belirlenmeyen bir nesnedeki yöntemi çağırdığınızda Safari’de meydana gelir. Kendi hatalarınızı yeniden üretmek için aynı kodu yukarıdan çalıştırabilirsiniz. Örnek TypeError belirtilmemiş bir işlevle. Bu hatanın çözümü de aynıdır – değişkenleri doğru bir şekilde başlattığınızdan ve özellik veya yönteme erişildiğinde değişken tanımlanmadığından emin olun. 5. TypeError: NULL, önceki hataya benzer şekilde bir kez daha bu nesne değildir. Safari’de oldu ve iki hata arasındaki tek fark, özelliği veya yöntemi erişilen nesne tanımlanmamış yerine boş olduğunda bu hatanın atılmasıydı. Bunu aşağıdaki kod indirimini çalıştırarak çoğaltabilirsiniz: var func = null func.call () Bu, alacağınız çıktıdır:
Deneme Denemek Anahtar kelimeler bir kod bloğunun bir istisna verebileceğini göstermek için kullanılır. Sözdizimi: Try {// Hataya İnce Kodu} TRE Catch bloğunun hataları etkili bir şekilde işlemek için her zaman deneme bloğunu takip etmesi gerektiğini belirtmek önemlidir. Anahtar kelime yakalamak bir yakalama bloğu yapmak için kullanılır. Bu kod bloğu, ek deneme blokları tarafından yakalanan hataların işlenmesinden sorumludur. Aşağıdaki sözdizimi: catch (istisna) {// burada istisnayı işlemek için kod} ve bu şekilde denemeyi uyguluyorsunuz: deneyin {// iş mantığı kodu} catch (istisna) {// hata işleme kodu} C ++ veya Java gibi, JavaScript’teki deneme bloğuna birkaç yakalama bloğu ekleyemezsiniz. Bu, bunu yapamayacağınız anlamına gelir: {// iş mantığı kodu} catch (exception) {if (istisna örneğifoff typeerror) {// bir şey yap}} catch (istisna) {if (exception trangeerror) {// yap Bir şey}} Bunun yerine, olası tüm hata durumlarını işlemek için … başka bir vaka ifadesini tek bir yakalama bloğunda kullanabilirsiniz. Bu şöyle görünecek:
{// Business Logic kodu} catch (istisna) {if (istisna örneği -typeerror) {// bir şey yapın} else (istisna rangeerror) {// başka bir şey yap}} Son olarak son anahtar kelime kodu tanımlamak için kullanılır Hata işlendikten sonra blok çalıştırın. Bu blok, deneme ve yakalama bloğundan sonra yürütülür. Ayrıca, blok sonunda diğer iki bloğun sonuçlarından bağımsız olarak yürütülecektir. Bu, yakalama bloğu tam hatayı işleyemese veya hata yakalama bloğuna atılsa bile, tercümanın program sıkılmadan önce nihayet blokta kodu yürüteceği anlamına gelir. Geçerli olarak kabul edilebilmek için, JavaScript’teki deneme bloğunu bir yakalama bloğu veya son olarak takip etmelidir. Tüm bunlar olmadan, tercüman SynTaxError’u getirecektir. Bu nedenle, hataları ele alırken deneyinizin bloğunu en az biriyle takip ettiğinizden emin olun. Oneror () yöntemi onerror () yöntemi ile küresel olarak hataları işleyin Tüm HTML öğelerinin kendisinde meydana gelebilecek hatalarla başa çıkması için kullanılabilir. Örneğin, IMG etiketi URL’leri belirlenen görüntüleri bulamazsa, etiket kullanıcıların hataları işlemesine izin vermek için Oneror yöntemini etkinleştirir. Genellikle, IMG etiketinin geri dönmesi için Oneror çağrısında başka bir resim URL’si vereceksiniz. Bunu JavaScript aracılığıyla böyle yapabilirsiniz: const image = document.querysecor (“img”) image.eroror = (olay) => {console.log (“Oluşturuldu Hata:” + Olay)} Ancak bunu kullanabilirsiniz Uygulamanız için küresel hataları işlemek için bir mekanizma oluşturmak için özellik. Bunu nasıl yapacağınız aşağıda açıklanmıştır: window.erorror = (event) => {console.log (“Oluşturuldu Hata:”
+ Event)} Bu olay işleyicisiyle, birkaç deneme bloğundan kurtulabilirsiniz … kodunuzdaki yakalama ve uygulama hatası işlemenizin odaklanın olayların işlenmesine benzer.Katı tasarım ilkesinin tek bir sorumluluğunu korumak için pencereye bazı hata işleme ekleyebilirsiniz.Tercüman uygun tutamaçlara ulaşmak için tüm tutamaçları döndürecektir.Basit ve doğrusal fonksiyonlar hataların ele alınmasına izin verirken hataları geri çağrıdan geçirirken, geri çağrıların basit kalmasına izin verir, geri çağrılar işleri karmaşıklaştırabilir.Aşağıdaki kod indirimini düşünün: Size rekabet avantajı sağlayan bir barındırma çözümüne mi ihtiyacınız var?Kinsta, olağanüstü hız, sofistike güvenlik ve otomatik ölçekte size yardımcı olur.Planımıza bakın
const calculateCube = (sayı, geri arama) => {setTimeout (() => {const cube = sayı * sayı * sayı geri arama (küp)}, 1000)} const geri çağrısı = sonuç => console.log (sonuç) calculateCube (4 4, geri arama) Yukarıdaki işlev, bir işlevin işlemi işlemek ve sonuçları daha sonra geri çağrılar yardımıyla döndürmesi için zaman gerektiren eşzamansız durumu gösterir.Fonksiyon çağrılarında 4 yerine dize girmeye çalışırsanız, sonuç olarak NAN’ı alacaksınız.Bunun düzgün bir şekilde ele alınması gerekiyor.İşte şu şekilde: const calculateCube = (sayı, geri arama) => {setTimeout (() => {if (typeof numarası! == “sayı”) yeni hata atın (“sayısal bağımsız değişken bekleniyor”) const cube = sayı * sayı * Sayı * sayı geri arama (küp)}, 1000)} const geri arama => console.log (sonuç) deneyin {calculateCube (4, geri arama)} catch (e) {console.log (e)} İdeal sorunu çözmeli .Ancak, dizeyi bir işlev çağrısına sürdürmeye çalışırsanız, şunları alırsınız:
Yanlış argümanla ilgili hataların örnekleri.İşlevi çağırırken bir deneme bloğu uygulamış olsanız bile, hatanın hala yakalanmadığı söyleniyor.Geciken süre tüketildiği için yakalama bloğu yürütüldükten sonra hata atıldı.Bu, beklenmedik gecikmelerin meydana geldiği ağ çağrılarında hızlı bir şekilde ortaya çıkabilir.Başvurunuzu geliştirirken bu tür durumları ele almanız gerekir.Bu, hatayı arka çağrıda doğru şekilde işleyebilmenizdir: const calculateCube = (sayı, geri arama) => {setTimeout () => eğer (typeof numarası! Sayısal bağımsız değişken beklenir “)) dönüş} const cube = sayı * sayı * sayı geri arama (null, küp), 2000)} const geri arama = (hata, sonuç) => {if (hata! == null) {konsol. log (hata) return} console.log (sonuç)} deneyin {calculatecube (‘hey’, geri arama)} catch (e) {console.log (e)} Şimdi, konsoldaki çıktı şu olacaktır:
Yasadışı argümanlarla TypeError örneklerinin ele alınması.Hataları vaatlerle ele almanın ne kadar kolay olduğunu gözlemleyebilirsiniz.Buna ek olarak, nihayet blok () ‘nı bağlayabilirsiniz ve hatanın işlenmesinden sonra çalıştırılacak kodu eklemek için bir randevu çağırabilirsiniz.Ya da, geleneksel deneme-yaka tekniklerini kullanmak için randevudaki hataları da ele alabilirsiniz.İşte bu durumda çağrı vaatinizin görünümü: {let sonuç = calculateCube (“hey”) console.log (sonuç)} catch (e) {console.log (e)} nihayet {konsol)} Ancak Sadece asenkron işlevde işlevler. Bu nedenle, bir randevudaki hataları ele almanın en çok tercih edilen yolu zinciri yakalamak ve son olarak vaat çağrısı.
İstediğiniz dört yöntemle, herhangi bir kullanım durumunda en uygun olanı nasıl seçeceğinizi bilmelisiniz.Kendinize karar verebileceğiniz yol budur:
Fırlatma/yakalama genellikle bu yöntemi kullanırsınız. Yakalama bloğunuzdaki tüm olası hataların koşullarını uyguladığınızdan emin olun ve bloktan sonra bazı bellek temizleme rutini çalıştırmanız gerekiyorsa son bloğu eklemeyi unutmayın. Ancak, çok fazla deneme/yakalama bloğu kodunuzu korumayı zorlaştırabilir. Böyle bir durumdaysanız, küresel kullanım veya vaat yöntemleri yoluyla hataları ele almak isteyebilirsiniz. Asenkron Try/Catch ve Catch () vaati arasında karar verirken, eşzamansız deneme/yakalama bloğunu kullanmanız tavsiye edilir, çünkü blok kodunuzu doğrusal ve hata ayıklamayı kolaylaştıracaktır. Error () Uygulamanızın birçok hatayı ele alması gerektiğini bildiğinizde Oneror () yöntemini kullanmalısınız ve hata kod tabanı boyunca iyi yayılabilir. Oneror yöntemi, hataları uygulamanız tarafından işlenen başka bir olaymış gibi ele almanızı sağlar. Bazı hata tedavisi belirleyebilir ve ilk oluşturma işleminde uygulama pencerenize ekleyebilirsiniz. Bununla birlikte, Oneror () yönteminin, daha küçük hata kapsamına sahip daha küçük projelerde hazırlanacak gereksiz bir zorluk olabileceğini de hatırlamanız gerekir. Uygulamanızın çok fazla hataya neden olmayacağından eminseniz, geleneksel atış/yakalama yöntemi sizin için en iyi şekilde çalışacaktır. Kodun tasarımı ve yapısı nedeniyle geri çağrılar ve farklı vaatlerdeki hataları ele almayı tersine çevirir ve vaat eder. Ancak, kodu yazmadan önce ikisi arasında seçim yaparsanız, bir randevu kullanmalısınız.
Bunun nedeni, vaatin hataları kolayca işlemek için yakalama bloğunu () ve son olarak () zincirlemek için bir inşaat yapmasına sahip olmasıdır. Bu yöntem, ek argümanların tanımından daha kolay ve daha temizdir/hataları işlemek için mevcut argümanları yeniden kullanma. Git depoları ile değişiklikleri takip edin Kod tabanındaki manuel hatalar nedeniyle genellikle birçok hata ortaya çıkar. Kodunuzu geliştirirken veya hata ayıklarken, kod tabanınızda yeni hataların görünmesine neden olabilecek gereksiz değişiklikler yapabilirsiniz. Otomatik test, her değişiklikten sonra kodunuzu kontrol altında tutmanın harika bir yoludur. Howver, size sadece yanlış bir şey olup olmadığını söyleyebilir. Kodunuzun sık sık yedeklemelerini almazsanız, daha önce iyi çalışan bir işlevi veya komut dosyasını düzeltmeye çalışmak için zaman kaybedersiniz. Git rolünü oynuyor. Propy taahhüt stratejisiyle, Git geçmişinizi, kodunuzu geliştirme yoluyla geliştirirken görüntülemek için bir yedekleme sistemi olarak kullanabilirsiniz. Daha eski Ticaretlerinize göz atabilir ve daha önce iyi çalışan işlevin sürümünü bulabilirsiniz, ancak ilgisiz bir değişiklikten sonra hatalar atabilirsiniz. Daha sonra eski kodu geri yükleyebilir veya neyin yanlış yanlış olduğunu belirlemek için iki sürümü karşılaştırabilirsiniz. Github Desktop veya Gitkraken gibi modern web geliştirme araçları, bu değişiklikleri yan yana görselleştirmenize ve hataları hızlı bir şekilde bulmanıza yardımcı olur. Daha az hata yapmanıza yardımcı olabilecek bir alışkanlık, kodunuzda önemli bir değişiklik yaptığınızda kod incelemelerini çalıştırmaktır. Bir ekipte çalışıyorsanız, bir çekme isteği oluşturabilir ve bir ekip üyesinin iyice incelemesini sağlayabilirsiniz. Bu, sizin tarafınızdan kaymış olabilecek hataları tespit etmek için ikinci bir çift göz kullanmanıza yardımcı olacaktır.
JavaScript’teki hataları ele almak için en iyi uygulamalar Yukarıda belirtilen yöntemler, bir sonraki JavaScript uygulamanız için sağlam bir hata işleme yaklaşımı tasarlamanıza yardımcı olmak için yeterlidir. Nasıl, hatayı korumanızdan en iyi şekilde yararlanmak için bunları uygularken birkaç şeyi akılda tutmak en iyisidir. İşte size yardımcı olacak bazı ipuçları. 1. Operasyonel istisnaları işlerken özel hataları kullanın Bu kılavuzun başlarında özel hataları, uygulama benzersiz durumunuza nasıl özelleştireceğiniz hakkında bir fikir vermek için bu kılavuzun başlarında tanıttık. Çağrı ortamına hata hakkında daha bağlamsal bilgi sağladığı için, genel hata sınıfının mümkün olan her yerde özel hataların kullanılması tavsiye edilir. Bunun da ötesinde, özel hatalar, çağrı ortamında bir hatanın nasıl görüntülendiğini ılımlı hale getirmenizi sağlar. Bu, belirli ayrıntıları gizlemeyi seçebileceğiniz veya istediğiniz zaman ve ne zaman hata hakkında ek bilgiler gösterebileceğiniz anlamına gelir. Hata içeriğini ihtiyaçlarınıza göre biçimlendirecek kadar ileri gidebilirsiniz. Bu, hatanın nasıl yorumlandığı ve işlendiği konusunda daha iyi kontrol sağlar. 2. En üst düzey geliştiriciler bile genellikle bir çaylak hatası yapar – kodlarında derinlerde istisna seviyeleri tüketir. Çalışmak için isteğe bağlı bir kod parçanız olduğu durumlarla karşılaşabilirsiniz. Eğer işe yarıyorsa, harika; Değilse, bu konuda hiçbir şey yapmanıza gerek yok. Bu durumlarda, bu kodu bir deneme bloğuna koymak ve boş bir yakalama bloğu eklemek caziptir. Howver, bunu yaparak, bu kod parçasını her türlü hataya neden olmak ve ondan kurtulmak için açık bırakacaksınız.
Büyük bir kod tabanınız ve bu tür kötü hata yönetimi yapılarının birçok örneğiniz varsa bu tehlikeli olabilir. İstisnaları ele almanın en iyi yolu, hepsinin dağıtılacağı bir seviyeyi belirlemek ve oraya kadar yükseltmektir. Bu seviye bir denetleyici (bir MVC mimarlık uygulamasında) veya bir ara katman yazılımı (geleneksel sunucu odaklı bir uygulamada) olabilir. Bu şekilde, uygulamanızda meydana gelen tüm hataları nerede bulabileceğinizi ve onlar hakkında hiçbir şey yapmasa bile bunları nasıl çözeceğinizi seçebileceğinizi öğreneceksiniz. 3. Günlükler ve hata uyarıları için merkezi bir strateji kullanın Bir hata, bunu kullanmanın ayrılmaz bir parçasıdır. Günlük hataları için merkezi bir strateji geliştiremeyenler, uygulamalarının kullanımı hakkında değerli bilgileri kaçırabilirler. Bir uygulamanın etkinlik günlükleri, hatalar hakkında önemli verileri bulmanıza ve bunları hızlı bir şekilde hata ayıklamaya yardımcı olabilir. Uygulamanızda kurulmuş uygun uyarma mekanizmalarınız varsa, kullanıcı tabanınızın büyük bir bölümüne ulaşmadan önce uygulamanızda bir hata oluştuğunu bilebilirsiniz. Önceden inşa edilmiş bir loger kullanmanız veya ihtiyaçlarınıza uygun bir loger oluşturmanız tavsiye edilir. Bu günlükçüyü hataları seviyelerine göre (uyarı, hata ayıklama, bilgi vb.) İşleyecek şekilde yapılandırabilirsiniz ve bazı kaydeteciler, uzaktan günlük sunucularına derhal günlük gönderecek kadar ileri gider. Bu şekilde, uygulama mantık performansınızı aktif kullanıcılarla nasıl izleyebilirsiniz. 4. Hata işleme stratejinizi tanımlarken akılda tutulması gereken hatalar hakkında kullanıcılara uygun olarak kullanıcıları bilgilendirmek kullanıcıyı akılda tutmaktır. Uygulamanızın normal işleyişine müdahale eden tüm hatalar, kullanıcının bir çözüm çözmeye çalışabilmesi için yanlış bir şey olduğunu bildirmek için kullanıcıya görünür bir uyarı sunmalıdır.
Bir işlem yeniden denemek veya oturum açmak ve tekrar oturum açmak gibi hata için hızlı bir düzeltme biliyorsanız, kullanıcı deneyimini gerçek zamanlı olarak düzeltmeye yardımcı olmak için tetikte bahsettiğinizden emin olun. Günlük kullanıcı deneyimine herhangi bir müdahaleye neden olmayan hatalar söz konusu olduğunda, uyarıyı bastırmayı ve hatayı laterleri çözmek için uzak bir sunucuya kaydetmeyi düşünebilirsiniz. 5. Bir ara katman yazılımı uygulayın (Node.js) Node.js ortamı, sunucu uygulamalarına işlevsellik eklemek için orta kranstenleri destekler. Bu özelliği sunucunuz için bir hata işleme ara katman yazılımı oluşturmak için kullanabilirsiniz. Middleware kullanmanın en önemli yararı, tüm hatalarınızın merkezi olarak tek bir yerde ele alınmasıdır. Bu kurulumu test amacıyla etkinleştirmeyi/devre dışı bırakmayı seçebilirsiniz. Nasıl temel bir ara katman yazılımı oluşturabilirsiniz: const lokerror = err => {konsol next (err)} const returnerRorMiddleware = (err, req, res, sonraki) => {res.status (err.statuscode || 500). (Err.message)} modül.exports = {lokerror, errorloggerMiddleware, daha sonra bu ara katman yazılımını uygulamanızda kullanabilirsiniz: const {errorloggerMiddleware, retanerrormdleware, retanerrormdleware, retanerrormdleware ‘) app.use (errorloggerMiddleware) uygulaması. Hataları doğru kullanın. Tüm kod tabanlarınızda tekrar bireysel hataların yapılması konusunda endişelenmenize gerek yoktur. 6. Düğüm uygulaması sırasında programcı hatalarını (Node.js) işlemek için uygulamanızı tekrar başlatın.
JS bir programcı hatası yaşar, bir istisna yayınlamaları ve uygulamayı kapatmaya çalışmaları gerekmeyebilir. Bu hatalar, yüksek CPU tüketimi, bellek şişkinliği veya bellek sızıntısı gibi programcı hatalarından kaynaklanan sorunları içerebilir. Bununla başa çıkmanın en iyi yolu, uygulamayı küme nodu.js veya PM2 gibi benzersiz araçlar üzerinden durdurarak iyi başlatmaktır. Bu, kullanıcı harekete geçtiğinde uygulamanın vurulmamasını sağlayarak kötü bir kullanıcı deneyimi sunar. 7. Yakalanmayan tüm istisnaları yakalayın (Node.js) Uygulamanızda gerçekleşebilecek olası hataları ele aldığınızdan asla emin olamazsınız. Bu nedenle, başvurunuzdan yakalanmayan tüm istisnaları yakalamak için bir geri dönüş stratejisi uygulamak önemlidir. Bunu yapabileceğiniz yoldur: Process.on (‘Unclamption’, hata => {console.log (“hata:” + string (hata)) // Diğer işleme mekanizmaları}) Ayrıca, hatanın olup olmadığını da belirleyebilirsin meydana gelen standart istisna veya özel operasyonel hatalardır. Sonuçlara dayanarak, beklenmedik davranışı önlemek için işlemden çıkabilir ve yeniden başlatabilirsiniz. 8. İşlenmeyen vaatlerin tüm reddini (Node.js) tüm olası istisnaları nasıl karşılayamayacağınıza benzer şekilde yakalayın, vaatlerin tüm olası tüm reddini ele alarak kaybedeceksiniz. Ancak, istisnaların aksine, vaatlerin reddedilmesi hatalara neden olmaz.