ノード.JSエラー処理パターンの削除(例)
11257 ワード
非同期言語のエラー処理はユニークな方法で働き、多くの課題を提示します.ノードには主なエラー処理パターンが7つあります.js簡単にチェックしましょう.
Originally published on FullStack.Cafe - Never Fail Your Tech Interview Again
エラーリターン値
非同期で動作しない最も簡単なパターン.考慮:
var validateObject = function (obj) {
if (typeof obj !== 'object') {
return new Error('Invalid object');
}
};
スローイングエラー
うまく機能を確立するパターンは、関数がそのエラーを発生し、エラーの発生が発生した場合、単にエラーをスローする.不安定な状態であなたを残すことができます.それをキャッチする余分な仕事が必要です.また、エラーが非同期的に起こるので、try/catchでasync呼び出しをラップするのは助けません.これを解決するにはドメインが必要です.ドメインは非同期のトライを提供します.キャッチ.
var validateObject = function (obj) {
if (typeof obj !== 'object') {
throw new Error('Invalid object');
}
};
try {
validateObject('123');
}
catch (err) {
console.log('Thrown: ' + err.message);
}
エラーコールバック
コールバック経由でエラーを返すのは、ノードで最も一般的なエラー処理パターンです.js取り扱いエラーコールバック混乱(コールバック地獄や運命のピラミッド)になることができます.
var validateObject = function (obj, callback) {
if (typeof obj !== 'object') {
return callback(new Error('Invalid object'));
}
return callback();
};
validateObject('123', function (err) {
console.log('Callback: ' + err.message);
});
発光エラー
エラーを発生させるとき、エラーはどんな興味ある加入者にも放送されて、同じプロセスダニの範囲内で扱われます.
var Events = require('events');
var emitter = new Events.EventEmitter();
var validateObject = function (a) {
if (typeof a !== 'object') {
emitter.emit('error', new Error('Invalid object'));
}
};
emitter.on('error', function (err) {
console.log('Emitted: ' + err.message);
});
validateObject('123');
約束する
Asyncエラー処理に使用する約束.考慮:
doWork()
.then(doWork)
.then(doError)
.then(doWork)
.catch(errorHandler)
.then(verify);
…非同期で待つ
ES 7 async/waitは、開発者として同期するように非同期のJSコードを書くことができます.
async function f() {
try {
let response = await fetch('http://no-such-url');
} catch(err) {
alert(err); // TypeError: failed to fetch
}
}
f();
待ちに待った
JavaScriptのcatchブロックを試みることなく、async/waitのバリエーション.考慮:
import to from 'await-to-js';
async function main(callback) {
const [err,quote] = await to(getQuote());
if(err || !quote) return callback(new Error('No Quote found');
callback(null,quote);
}
🔗ソース:gist.github.comThanks 🙌 for reading and good luck on your interview!
Check more FullStack Interview Questions & Answers on 👉 www.fullstack.cafe
Reference
この問題について(ノード.JSエラー処理パターンの削除(例)), 我々は、より多くの情報をここで見つけました https://dev.to/fullstackcafe/nodejs-error-handling-demystified-2nboテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol