IT/HTML,CSS,JavaScript

[JavaScript] 자바스크립트 기초 복습 part 13

j8970 2025. 4. 7. 10:39

📌 자바스크립트 예외 처리 (Exception Handling)


🔹 오류(Error)란?

오류는 부정확하거나 유효하지 않은 동작을 의미합니다.

  • SyntaxError : 문법 오류
  • ReferenceError, TypeError, 등은 런타임 중 발생하는 예외.

🔹 예외(Exception)의 종류

1️⃣ 구문 오류 (Syntax Error)

  • 프로그램 실행 전, 코드 작성 시 문법 오류로 인해 발생.
  • 언어의 규칙을 따르지 않을 때 발생합니다.
console.log('-- 구문 오류 예제 --');
// console.log('프로그램이 시작되었습니다' // 닫는 괄호 없음

2️⃣ 런타임 오류 (Runtime Error)

  • 프로그램 실행 중에 발생하는 예외.
  • 오타나 예외적인 상황으로 인해 실행이 중단될 수 있음!
console.log('-- 런타임 오류 예제 --');
// console.rog('log를 rog로 잘못 입력하였습니다'); // 오타 발생

📌 SyntaxError를 제외한 모든 오류는 런타임 예외로 분류 됨.


🔹 예외 처리 방법

1️⃣ 기본 예외 처리 (조건문 사용)

document.addEventListener('DOMContentLoaded', () => {
  const h1 = document.querySelector('h1');

  if (h1) {
    h1.textContent = '안녕하세요';
  } else {
    console.log('h1 태그가 존재하지 않습니다.');
  }
});

⚠️ 조건문을 통한 예외 처리는 복잡한 상황에 적합하지 않으므로, 권장되지 않음!


2️⃣ 고급 예외 처리 (try...catch...finally)

function randomException() {
  if (Math.random() < 0.5) {
    throw new Error('무언가 잘못되었습니다!');
  }
  return '성공적으로 실행되었습니다.';
}

try {
  const result = randomException();
  console.log(result);
  console.log('try 구문의 마지막 줄');
} catch (e) {
  console.log('catch 구문');
  console.log(e.message);
} finally {
  console.log('언제나 실행');
}

console.log('======================');

🔸 Error 객체

  • 자바스크립트의 모든 예외는 Error 객체를 상속.
  • 주요 속성:
    • name : 예외 이름
    • message : 예외 메시지
let myError = new Error('에러를 생성합니다.');
console.log(myError.message);

🔹 사용자 정의 예외 처리 및 throw

throw 키워드를 사용하면 예외를 강제 발생시킬 수 있음.

function text(obj) {
  if (!obj || obj.a === undefined || obj.b === undefined) {
    throw new Error('함수 호출 시 object와 a, b 속성이 전달되어야 합니다!');
  }
  console.log(obj.a + obj.b);
}

try {
  text({a: 5, b: 10});
  text({a: '전', b: '창현'});
  text(); // 예외 발생
} catch (e) {
  console.error('에러 발생:', e.message);
}

console.log('일반 코드 흐름');

🚀 예외 처리 활용 잘하기!!