Node.js의 assert 모듈은 함수 검증(assertion)을 위한 다양한 기능을 제공하는 내장 모듈입니다. 그중 assert.ifError() 함수는 전달된 값이 null 또는 undefined가 아닐 경우 에러를 발생시키는 역할을 합니다. 주로 콜백 함수에서 첫 번째 인자로 전달되는 에러 객체를 간편하게 처리할 때 유용하게 사용됩니다.
구문(Syntax)
assert.ifError(value)
매개변수(Parameters)
value – 에러 여부를 검사할 값입니다. 이 값이
null또는undefined인 경우에는 아무런 동작도 하지 않지만, 그 외의 모든 값(0, 빈 문자열, false 포함)에 대해서는AssertionError를 발생시킵니다.
Assert 모듈 설치하기
npm install assert
assert 모듈은 Node.js에 기본으로 내장되어 있으므로 별도 설치 없이 바로 사용할 수 있습니다. 현재 설치된 버전을 확인하려면 아래 명령어를 실행하세요.
npm version assert
모듈 불러오기
코드에서 assert 모듈을 사용하려면 먼저 require로 모듈을 가져와야 합니다.
const assert = require("assert").strict;예제 1: null이 아닌 값을 전달한 경우
assertIfError.js라는 이름의 파일을 생성하고 아래 코드를 작성한 뒤, 터미널에서 실행해 보겠습니다.
node assertIfError.js
assertIfError.js
// 모듈 불러오기
const assert = require('assert').strict;
try {
assert.ifError('6');
// '6'은 null/undefined가 아니므로 에러 발생
} catch(error) {
console.log("Error:", error)
}출력 결과
C:\home\node>> node assertIfError.js
Error: { AssertionError [ERR_ASSERTION]: ifError got unwanted exception: '6'
at Object. (/home/node/mysql-test/assert.js:5:9)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
generatedMessage: false,
name: 'AssertionError [ERR_ASSERTION]',
code: 'ERR_ASSERTION',
actual: '6',
expected: null,
operator: 'ifError' }위 예제에서 전달된 값 '6'은 null이나 undefined가 아니기 때문에 AssertionError가 발생한 것을 확인할 수 있습니다.
예제 2: null과 undefined를 전달한 경우
이번에는 유효한 값인 null과 undefined를 전달해 보겠습니다.
// 모듈 불러오기
const assert = require('assert').strict;
try {
assert.ifError(null);
console.log("No Error occured")
assert.ifError(undefined);
console.log("OK")
// null과 undefined는 유효한 값이므로 에러가 발생하지 않음
} catch(error) {
console.log("Error:", error)
}출력 결과
C:\home\node>> node assertIfError.js No Error occured OK
위 예제에서 볼 수 있듯이 null과 undefined는 assert.ifError()에서 허용되는 값이므로 어떠한 에러도 발생하지 않고 정상적으로 코드가 실행됩니다.
정리
assert.ifError()는 콜백 패턴에서 에러 처리 로직을 단순화할 때 특히 유용합니다. 예를 들어 파일 시스템 작업이나 데이터베이스 쿼리의 콜백에서 첫 번째 인자인 err를 검사할 때 if(err) throw err; 대신 assert.ifError(err); 한 줄로 깔끔하게 처리할 수 있습니다. 다만 프로덕션 환경에서는 의도치 않은 프로세스 종료를 방지하기 위해 try-catch 블록과 함께 사용하는 것이 좋습니다.