Error handing

이정기·2022년 12월 12일
0

TIL

목록 보기
37/71
post-thumbnail

에러 핸드링이란?

에러관리, 예상못한 상황 대처 방식

try / catch

서버에서 에러를 발생하지 않기 위해 예외처리 진행
에러가 발생하더라도 프로그램이 멈추지 않고 에러를 기록할 수 있다.

if 문으로 실행 조건을 거는 것이 아닌, try 를 실행하더라도 catch 가 실행될 수 있으니
if 문과 헷갈리지 말아야한다.

try / catch 사용 예제

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

해당 예제에선, 배열에 있는 숫자를 문자열로 인식 할 수 없어 에러를 출력한 모습이다.

throw

즉시 현재 실행되고 있는 함수 실행을 멈추게 한다.

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: 잔고가 부족합니다.

해당 예제이선, withdraw 라는 함수의 첫 번째, 인자값이 if 문의 balance 값 보다 컸을 경우, 에러를 발생하는 모습이다. 이건 else 문으로도 해결이 가능했을 텐데 적당한 예시가 더 필요할 것 같다.

finally

try / catch 의 짝궁.
예외처리를 하고, 필요없는 자원을 삭제해 메모리를 관리한다.

finally 사용 예제

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

errorException(false);
// 자원을 할당하였습니다.
// 자원을 제거하였습니다.
errorException(true);
// 자원을 할당하였습니다.
// 에러가 발생했습니다.
// 자원을 제거하였습니다.

try catch 둘중 어느 부분을 통과하더라도, finally 는 실행된다.

profile
Node.js 로 꿈을 꾸었다..

0개의 댓글