2011-10-13 26 views
6

Bir node.js komut dosyasına sahibim ve bir hata oluştuğunda node.js, oluşan hatayla birlikte çalışmayı durdurur.node.js, hataları yakaladığından komut dosyası kırılmıyor mu?

node.js dosyasındaki hataları denetlemenin doğru yolu nedir, bu nedenle komut dosyasını kesmez ve node.js'nin durmasına neden olur?

+0

Hatalarınızı düzeltir misiniz? "Try ... catch" bloklarında potansiyel çalışma zamanı hatalarıyla kod sarın mı? Bu başka bir dilden/tercümandan nasıl farklıdır? – nrabinowitz

+0

@nrabinowitz Bir hata meydana gelirse, yakalamayı denemeyince betiği bozmazsınız? Ve lütfen bilgi eksikliğimi affedin, nodejs için çok yeni ve konfor seviyemin dışında. Öğrenmeye çalışıyorum. – John

+0

evet, 'try ... catch 'in Javascript'te diğer dillerde olduğu gibi çalışır, run-time kodundaki hataları yakalamanıza ve bunlarla başa çıkmanıza izin verir (ancak ayrıştırma hatalarıyla, örneğin sözdizimi hatalarıyla yardımcı olmaz). Bkz. Https://developer.mozilla.org/en/JavaScript/Reference/Statements/try...catch – nrabinowitz

cevap

17

Aşağıdaki ayarlayarak aksi yakalanmamış hataları yakalamak: Elbette

process.on('uncaughtException', function (exception) { 
    // handle or ignore error 
    }); 

, sonsuza veya düğüm-danışman, senaryonuz "durur" ne zaman böyle bir şey içinde komut dosyasını çalıştırın eğer geri başlayacak sorununuzu çözebilir.

+0

Gerçekten çok kullanışlı ... günlük dosyalarımı kontrol etmeyi sinir bozucu hale getirmeye başlamıştı – Carlton

+1

Bu hala önerilir mi? Bunun yan etkileri var mı? – Samson

+0

Bu hata işleme yöntemi Joylet web sitesinde kesinlikle önerilmez. https://www.joyent.com/developers/node/design/errors – MattSidor

3

Yakalama kaçırmaException artık önerilmez.

domains kullanımı tercih edilir. Özel durumu ele aldıktan sonra "uncaughtException" veya Etki Alanı'nı kullanarak işlemi yeniden başlatmak önemle tavsiye edilir. İşlemi otomatik olarak yeniden başlatmak için NodeJS, çalışan iş parçacıklarının yönetilmesine yardımcı olan Cluster adlı başka bir kitaplık sağlar.

+1

alan adları şimdi resmi olarak kullanımdan kaldırılmıştır. https://nodejs.org/api/domain.html – MattSidor

İlgili konular