1 분 소요

✅ 예외란?

  • 예외(Exception): 코드 실행 중 발생하는 런타임 오류
  • 오류(Error): 문법적인 잘못으로 발생하는 컴파일 단계 오류 (try/catch로 잡히지 않음)

📌 예외 발생시키기: throw

throw "예외 메시지";
throw 404;
throw new Error("에러 객체 예외 발생!");

문자열, 숫자, Error 객체 모두 예외로 던질 수 있습니다.


📌 예외 처리 구문: try / catch / finally

try {
  // 예외 발생 가능 코드
} catch (error) {
  console.error(error.name); // 예: "Error"
  console.error(error.message); // 상세 메시지
} finally {
  console.log("항상 실행됩니다.");
}
구성 설명
try 예외 발생 가능 코드 블록
catch 예외 발생 시 실행
finally 예외 여부와 관계없이 항상 실행 (선택적)

✅ 조합 가능: try/catch, try/finally, try/catch/finally


📌 Error 객체

try {
  throw new Error("사용자 정의 예외!");
} catch (e) {
  console.log(e.name); // Error
  console.log(e.message); // 사용자 정의 예외!
}
프로퍼티 설명
name 예외의 이름 (기본값: "Error")
message 예외 메시지 내용

🚫 Strict 모드

✅ 정의

"use strict" 선언을 통해 자바스크립트 실행을 더 엄격한 모드(strict mode)로 전환

버그를 조기에 잡고, 암시적인 동작을 금지합니다.

📌 선언 위치

  • 전체 스크립트 상단
"use strict";
  • 함수 내에서만 적용
function doStrict() {
  "use strict";
  // 엄격 모드로 동작
}

🚨 Strict 모드의 주요 제약

대상 제한 내용
변수 선언 없이 사용 ❌ (x = 10 → 오류)
함수 중복 매개변수 ❌, 블록 내 선언 제한
객체 읽기 전용 프로퍼티 수정 ❌
예약어 eval, with 등 사용 ❌
this 전역에서 thisundefined
delete 변수, 함수 삭제 불가

📌 예시

"use strict";
x = 10; // ReferenceError: x is not defined

🧪 브라우저 지원

브라우저 지원 버전
IE 10 이상
Chrome 13 이상
Firefox 4 이상
Safari 5.1 이상
Opera 12 이상

✅ 실전 팁 요약

상황 권장 방식
예외 발생 예상 try / catch로 안전 처리
사용자 예외 발생 throw new Error("...") 사용
예외 디버깅 error.name, error.message 활용
코드 안정성 확보 "use strict" 도입 (최상단 선언 권장)

질문 정리

Q1. try 없이 throw만 쓰면 어떻게 되나요?

A: 프로그램이 즉시 중단되고 콘솔에 오류 메시지가 출력됩니다.

Q2. catch 블록의 에러 객체 이름은 반드시 error여야 하나요?

A: 아니요. catch (e)처럼 어떤 이름도 사용 가능하지만 error, err, e가 관례입니다.

Q3. finally는 꼭 써야 하나요?

A: 선택 사항이지만, 리소스 정리 작업에는 매우 유용합니다 (예: 파일 닫기, 로딩 제거 등).

카테고리:

업데이트:

댓글남기기