Beklenmeyen bir zaman uyumsuz çağrısından kaynaklanan hatalar yakalanabilir, özgün bir kapsülleme denemesine/yakalamaya gönderilebilir veya yakalanmamış bir istisna kaldırılabilir mi?Bekleme olmadan bir uyumsuzluktan bir hata yakalayabilir miyim?
İşte bir Yani ne örnek: Bu senaryoda
async function fn1() {
console.log('executing fn1');
}
async function fn2() {
console.log('executing fn2');
throw new Error('from fn2');
}
async function test() {
try {
await fn1();
fn2();
}
catch(e) {
console.log('caught error inside test:', e);
}
}
test();
, fn2
atılan hata sessizce yuttu ve kesinlikle orijinal try/catch
tarafından yakalanmış edilmeyecektir. Bu beklenen davranış olduğuna inanıyorum, çünkü fn2
büyük olasılıkla gelecekte bir noktada bitirmek için olay döngüsüne itiliyor ve test
bittiğinde (kasıtlı olarak) umursamıyor.
try/catch
iç fn2
içine ekleme ve hata yapmak gibi bir şey yapmadan kısa bir süre içinde böyle bir yapı tarafından yanlışlıkla yutulmadığından emin olmanın bir yolu var mı? Nasıl yakalanacağını bilmeden yakalanamayan bir hataya bile razı olurdum, bence - Yazdıklarıma göre tipik bir program akışı hatası almayı beklemiyorum, fakat yutkunma hataları onu hata ayıklama konusunda nispeten can sıkıcı hale getiriyor.
Yan not, babel-çalışma zamanı dönüşümünü kullanarak kodu iletmek ve düğümü kullanarak yürütmek için Babel kullanıyorum.
Neye ulaşmaya çalıştığınızdan emin değilim, ama söz vermemek için bir neden var mı? – Tom
İşlenmemiş reddetme algılamayı destekleyen bir söz kitaplığı kullanın. – Bergi
Tom, pek değil, hayır. Bu noktada es7 sözdizimi ile ne yapılabileceğini görmek için vaatler yerine async/beklemeyi kullandım ve bu onunla oynarken karşılaştığım bir soruydu. Bergi, eğer şu anda başka bir seçenek yoksa (ki bu durumda şüpheliyim) geri döneceğim. – dvlsg