Node.js 함수 내 함수를 통한 코드 정리 예시

function test(){
  let a = 1;
  let b = 2;

  const func1 = () => {
    if(a == 1){
      throw new Error("a = 1");
    }
    console.log('func1 success');
  }

  const func2 = () => {
    if(b == 2){
      throw new Error("b = 2");
    }
    console.log(`func2 success`);
  }

  try{
    func1();
    func2();
  }
  catch(ex){
    console.error(`test failed - ${ex.message}`);
    return;
  }
}

test();

하나의 작업을 수행하는 함수 내에서도 다양한 추상화 수준의 코드들이 존재할 수 있기 때문에 이들을 다시 내부 함수로 분리하여 코드 가독성을 높이고, 내부 함수들을 try-catch 문에서 한번에 실행함으로써 오류 처리와 가독성을 높일 수 있습니다.

아래는 비동기 함수에 대한 처리 방법입니다.

async function test(){
  let a = 2;
  let b = 2;

  const func1 = (value) => new Promise((resolve, reject) =>{
    setTimeout(()=>{
      console.log(value);
      if(a == 1){
        reject(new Error('func1 error'));
      }
      resolve('func1 success');
      
    }, 1000);
  });

  const func2 = (value) => new Promise((resolve, reject) =>{
    setTimeout(()=>{
      console.log(value);
      if(b == 2){
        reject(new Error('func2 error'));
      }
      resolve('func2 success');
    }, 1500);
  });

  try{
    let result = await func1('func1 call');
    console.log(result);
    result = await func2('func2 call');
    console.log(result);
  }
  catch(ex){
    console.error(`test failed - ${ex.message}`);
    return;
  }
}

test();