
🎯 예외 상황은 런타임 시에 의도치 않은 상황을 뜻합니다. 이를 숙지하여 핸들링하도록 에러의 종류에 알아보고자 합니다.
JavaScript에서 발생하는 Error Types
RangeError숫자 변수나 매개변수가 유효한 범위를 벗어났을 때 발생하는 오류
ReferenceError잘못된 참조를 했을 때 발생하는 오류
SyntaxError문법이 올바르지 않을 때 발생하는 오류
TypeError변수나 매개변수가 유효한 자료형이 아닐 때 발생하는 오류
URIErrorencodeURI()나 decodeURl() 함수에 부적절한 매개변수를 제공했을 때 발생하는 오류
AggregateError하나의 동작이 여러 개의 오류 발생시키는 경우(예: Promise.any()) 여러 오류를 하나의 오류로 감싸는 인스턴스
.
.
.
Web API에서 발생하는 Error Types
IndexSizeError인덱스가 허용 범위를 벗어난 오류
HierarchyRequestErrorDOM에 추가하려는 노드가 허용되지 않는 오류 (부모-자식 관계가 올바르지 않을 때 주로 발생합니다.)
WrongDocumentErroriFrame 또는 외부 문서에서 가져온 노드를 현재 DOM에 삽입하려 할 때 발생하는 오류
NotFoundErrorDOM에서 존재하지 않는 노드를 제거하거나 조작하려 할 때 발생하는 오류
SyntaxError제공된 문자열이 올바른 구문을 따르지 않을 때 발생하는 오류
NetworkError네트워크 요청이 실패했을 때 발생하는 오류
AbortError네트워크 요청이나 다른 작업이 중단되었을 때 발생하는 오류
TimeoutError작업 시간이 초과되었을 때 발생하는 오류 (응답 한도를 넘어선 경우)
.
.
.
그외는 new Error() 를 사용하여 직접 Error를 핸들링할 수 있는 방안이 있다.
const errorMessage = () => {
console.log('throw 하기 전 메세지');
const customError = new Error();
customError.name = 'customError';
customError.message = '에러가 발생하였습니다.';
throw customError;
console.log('throw 한 후 메세지');
};
errorMessage();
// throw 하기 전 메세지
// Uncaught customError: 에러가 발생하였습니다.

Uncaught : catch문으로 처리되지 않은 상태를 의미합니다.
TypeError : console.lof라는 함수가 존재하지 않아 호출할 수 없다는 오류를 의미합니다.
<anonymous> : 코드가 특정 이름이 있는 함수가 아닌 익명 함수나 콘솔 등에서 실행되었음을 의미합니다.
1 : 오류가 발생한 코드의 행 번호입니다. → 첫 번째 줄(공백 포함)에서 오류 발생한 것을 의미합니다.
9 : 오류가 발생한 코드의 열 번호입니다. → 아홉 번째 문자(공백 미포함)에서 오류가 발생한 것을 의미합니다.
레퍼런스
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Error
https://developer.mozilla.org/en-US/docs/Web/API/DOMException
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Error/Error