Error Handling

정승렬·2022년 9월 16일
0

1. throw로 에러 던지기

1-1 동기함수에서 에러 던지기

function someFunc(someParam) {
	if(!someParam) {
    	throw new Error('someError');
    }
   
    //... someFunc의 로직
    
    return somParam;
 }

 module.exports = { someFunc }

1-2 비동기함수에서 에러 던지기

 ...someFunc

async function someAsyncFunc(someParam) {
  if (!someParam) {
    throw new Error('someError');
  }

 // ...someAsyncFunc의 로직

return someParam;
}

module.exports = { someFunc, someAsyncFunc }

2. try - catch 구문으로 에러 핸들링

2-1 동기 방식

const { someFunc } = require('./func');

function caller() {
    const someValueWithParam = someFunc(1);
    console.log("someValue:", someValueWithParam);
    // someValue: 1
	
    try {
        const someValueWithoutParam = someFunc();
	// 에러가 발생하였으므로 더 이상 실행되지 않습니다.
	console.log('someValue', someValueWithoutParam);
    }
    catch(error) {
        console.log(error);
        // Error: someError
    }

    console.log('여기는 실행됩니다.');
}
caller();
// 최종적으로 콘솔에 보이는 것
someValue: 1
Error: someError
여기는 실행됩니다.

2-2 비동기 방식일때

2-2-1 await 방식

const { someAsyncFunc } = require('./func');

async function caller() {
    console.log('첫번째 콘솔');
    try {
        await someAsyncFunc();
    }
    catch(error) {
        console.log(error);
        // Error: someError
    }
    console.log('두번째 콘솔');
}
caller();

// 최종적으로 콘솔에 보이는 것
첫번째 콘솔
Error: someError
두번째 콘솔

2-2-2 promise-catch 방식

const { someAsyncFunc } = require('./func');

function caller() {
    console.log('첫번째 콘솔');
    someAsyncFunc().catch((error) => {
        console.log(error);
        // Error: someError
    });
    console.log('두번째 콘솔');
}
caller();

// 최종적으로 콘솔에 보이는 것
첫번째 콘솔
두번째 콘솔
Error: someError

0개의 댓글