Hello World/BN

NodeJS - Error Handling

Young's Today 2022. 11. 25. 18:13

1. Error Handling

에러를 관리하는 방법, 예상치 못한 상황에 대처하는 방식

 

2. try / catch

- 서버에서 에러가 발생하지 않게 예외 처리하기 위해 try - catch문 사용

- string.toUpperCase()를 사용하여 대문자로 변경할 때 문자열이 아닌 데이터가 들어오면 에러 발생

- 아래와 같이 했을 때 에러가 발생하더라도 프로그램이 멈추지 않고 에러를 기록할 수 있음

const users = ["Lee", "Kim", "Park", 2];

try {
  for (const user of users) {
    console.log(user.toUpperCase());
  }
} catch (err) {
  console.error(`Error: ${err.message}`);
}


// 출력
// LEE
// KIM
// PARK
// Error: user.toUpperCase is not a function

 

3. Throw

- 현재 실행되고 있는 함수는 실행을 멈추게 됨

- 강제로 에러를 발생시켜야 하는 경우 사용

function withdraw(amount, account) {
  if (amount > account.balance)
    throw new Error("잔고가 부족합니다.");
  account.balance -= amount;  // 여기서부터 에러 발생 후 이므로 출력되지 않음
	console.log(`현재 잔고가 ${account.balance}남았습니다.`); 
}

const account = { balance: 1000 };
withdraw(2000, account);

// Error: 잔고가 부족합니다.

 

4. finally

- http 연결이 되고 있거나 파일과 같은 자원을 처리할 때 사용

- 무의미한 메모리 차지하지 않도록 에러여부와 상관없이 일정 시점에서는 자원을 삭제시켜야 함

- 에러가 발생했는지 여부와 상관없이 언제든지 실행됨

function errorException(isThrow) {
  try {
    console.log('자원을 할당하였습니다.');
    if (isThrow) throw new Error();
  } catch (error) {
    console.log('에러가 발생했습니다.');
  } finally {
    console.log('자원을 제거하였습니다.');
  }
}

errorException(false); // 에러 발생하지 않았기 때문에 catch(error) 통과
// 자원을 할당하였습니다.
// 자원을 제거하였습니다.
errorException(true); // 에러 발생하면 발생하면 catch(error) 출력 후 실행
// 자원을 할당하였습니다.
// 에러가 발생했습니다.
// 자원을 제거하였습니다.