ノード.JSエラー処理パターンの削除(例)



非同期言語のエラー処理はユニークな方法で働き、多くの課題を提示します.ノードには主なエラー処理パターンが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.com

Thanks 🙌 for reading and good luck on your interview!
Check more FullStack Interview Questions & Answers on 👉 www.fullstack.cafe