TIL try{}catch(e){}finally{}

Rami·6일 전

TodayILearn

목록 보기
59/61

try / catch / finally“에러를 잡아서 프로그램이 죽지 않게 제어하는 장치”입니다.

1️⃣ try / catch / finally 한 문장 정의

에러가 발생할 수 있는 코드를 시도(try)하고,
에러가 나면 잡아서(catch) 처리하고,
무조건 실행해야 할 정리 작업을 finally에서 수행한다.


2️⃣ 기본 구조 (이것부터 외우셔도 됩니다)

try {
  // 에러가 발생할 수도 있는 코드
} catch (error) {
  // 에러가 발생했을 때 실행
} finally {
  // 에러 발생 여부와 상관없이 항상 실행
}

3️⃣ try는 언제 쓰나?

에러가 날 가능성이 있는 코드를 감쌀 때

대표적인 예:

  • JSON 파싱
  • 서버 통신 결과 처리
  • 사용자 입력값 변환
  • 존재하지 않는 값 접근
  • 직접 에러를 던질 때 (throw)

4️⃣ 가장 쉬운 예제 (JSON 파싱)

❌ try-catch 없이

const data = JSON.parse("잘못된 JSON");
// 여기서 바로 프로그램 에러 발생

✅ try-catch 사용

try {
  const data = JSON.parse("잘못된 JSON");
  console.log(data);
} catch (error) {
  console.log("JSON 형식이 올바르지 않습니다.");
}

👉 프로그램이 죽지 않고, 에러를 제어함


5️⃣ error 객체는 뭐냐?

catch (error) {
  console.log(error);
}

error 안에는:

  • 에러 메시지
  • 에러 타입
  • 스택 트레이스

등이 들어 있습니다.

실무에서는:

catch (error) {
  console.error(error.message);
}

6️⃣ finally는 언제 쓰나?

무조건 실행돼야 하는 코드

에러가 나든 안 나든 반드시 실행됩니다.

대표적인 예:

  • 로딩 상태 해제
  • 파일 닫기
  • 리소스 정리
  • 공통 후처리

예시: 로딩 처리

try {
  setLoading(true);
  fetchData();
} catch (error) {
  alert("데이터를 불러오지 못했습니다.");
} finally {
  setLoading(false);
}

👉 에러가 나도 로딩은 무조건 꺼짐


7️⃣ 직접 에러를 만드는 경우 (throw)

✔ 조건이 이상할 때 강제로 에러 발생

function withdraw(money) {
  if (money <= 0) {
    throw new Error("금액은 0보다 커야 합니다.");
  }
  return money;
}

try {
  withdraw(-100);
} catch (error) {
  console.log(error.message);
}

8️⃣ try-catch를 쓰면 안 되는 경우 ❌ (중요)

❌ 단순 조건 분기

// ❌ 이렇게 쓰면 안 됨
try {
  if (age < 20) throw new Error();
} catch {
  console.log("미성년자");
}

👉 이건 그냥 if문으로 처리해야 합니다.


9️⃣ async / await 와 함께 쓰는 경우 (실무 핵심)

async function getData() {
  try {
    const res = await fetch(url);
    const data = await res.json();
    return data;
  } catch (error) {
    console.log("서버 요청 실패");
  }
}

👉 비동기 함수에서는 try-catch가 사실상 필수


🔟 try / catch / finally 요약 표

구문역할
try에러가 날 수 있는 코드
catch에러 발생 시 처리
finally무조건 실행

🔚 한 줄 요약

  • try : 시도
  • catch : 실패 시 대응
  • finally : 무조건 정리
  • 에러를 숨기는 게 아니라 제어하는 도구

💡 이걸 이렇게 기억하시면 됩니다

“실패할 수도 있지만, 프로그램은 멈추면 안 될 때”

그때 try / catch / finally를 씁니다.

profile
YOLO

0개의 댓글