Node.js 오류 처리 패턴 이해하기(예시 포함)
비동기식 언어의 오류 처리는 고유한 방식으로 작동하며 예상치 못한 많은 문제를 제시합니다. Node.js에는 7가지 주요 오류 처리 패턴이 있습니다. 간단히 모두 확인해 보겠습니다.
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에서 비동기 호출을 래핑해도 도움이 되지 않습니다. 이 문제를 해결하려면 도메인이 필요합니다. 도메인은 비동기식 try...catch를 제공합니다.
var validateObject = function (obj) {
if (typeof obj !== 'object') {
throw new Error('Invalid object');
}
};
try {
validateObject('123');
}
catch (err) {
console.log('Thrown: ' + err.message);
}
오류 콜백
콜백을 통해 오류를 반환하는 것은 Node.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');
약속
비동기 오류 처리에 사용되는 약속입니다. 고려하다:
doWork()
.then(doWork)
.then(doError)
.then(doWork)
.catch(errorHandler)
.then(verify);
async/await로 시도...잡기
ES7 Async/await를 사용하면 개발자가 동기식으로 보이는 비동기 JS 코드를 작성할 수 있습니다.
async function f() {
try {
let response = await fetch('http://no-such-url');
} catch(err) {
alert(err); // TypeError: failed to fetch
}
}
f();
Await-to-js 라이브러리
Javascript에서 try-catch 블록이 없는 async/await의 변형입니다. 고려하다:
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
Reference
이 문제에 관하여(Node.js 오류 처리 패턴 이해하기(예시 포함)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/fullstackcafe/nodejs-error-handling-demystified-2nbo텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)