Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

Node.js assert.ifError() 함수 완벽 가이드: 사용법과 실전 예제

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를 전달한 경우

이번에는 유효한 값인 nullundefined를 전달해 보겠습니다.

// 모듈 불러오기
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

위 예제에서 볼 수 있듯이 nullundefined는 assert.ifError()에서 허용되는 값이므로 어떠한 에러도 발생하지 않고 정상적으로 코드가 실행됩니다.

정리

assert.ifError()는 콜백 패턴에서 에러 처리 로직을 단순화할 때 특히 유용합니다. 예를 들어 파일 시스템 작업이나 데이터베이스 쿼리의 콜백에서 첫 번째 인자인 err를 검사할 때 if(err) throw err; 대신 assert.ifError(err); 한 줄로 깔끔하게 처리할 수 있습니다. 다만 프로덕션 환경에서는 의도치 않은 프로세스 종료를 방지하기 위해 try-catch 블록과 함께 사용하는 것이 좋습니다.