2016-06-25 23 views
0

Ich benutze ES6 generators in Javascript und versuchen, meinen Kopf um mich wie ein Fehler behandelt von einer Bibliothek, die ich benutze. Im Folgenden finden Sie den Code-Schnipsel:Javascript Generator Catch Fehler

const feedParser = require('co-feedparser'); 
try { 
    const meta = yield feedParser(url); 
    return meta.articles; 
} catch(e) { 
    logger.error(e); 
} 

Die Bibliothek verwendet wird, ist co-feedparser die um feedparser Bibliothek ein Co-Wrapper ist. Die Bibliothek funktioniert gut, wenn urls, die übergeben werden, gültige rss-feeds haben. Jedes Mal, wenn ein ungültiges RSS-URL-Feed übergeben wird, statt die Ausnahme zu fangen, die App-Abstürze und Dumps

/node_modules/co-feedparser/node_modules/feedparser/main.js:332 
     this.stack[0][stdEl] = n; 
         ^

TypeError: Cannot assign to read only property 'feed' of false` 

die ich glaube, eine Ausnahme in der feedparser Bibliothek ist. Wie kann ich sicherstellen, dass diese Ausnahmen abgefangen werden, anstatt die gesamte App abstürzen zu lassen?

Antwort

0

Es scheint ein Problem von co-feedparser für die nicht korrekte Fehlerbehandlung zu sein. Vor allem beim Erstellen eines neuen Anfrage-Streams von der angegebenen URL und Pipe den Stream an die Feedparser.

Obwohl es keine perfekte Lösung ist. Aber Sie können anwendungsweite Fehler an einem Ort mit dem folgenden fangen.

process.on('uncaughtException', function(err){ 
    console.error('uncaughtException: ' + err.message); 
    console.error(err.stack); 
    process.exit(1);    // exit with error 
}); 
+0

Das einzige Problem bei diesem Ansatz ist, dass die App keine Antwort sendet, wenn der Fehler wegen ungültiger Anforderungsparameter ausgelöst wurde –