자바스크립트는 실행중 오류가 발생하면 Error 객체를 만든다.
자바스크립트는 싱글쓰레드 언어이기 때문에 에러를 꼭 처리해주어야 한다.
throw <error object>
throw는 에러를 발생시키는 코드이다.
throw new Error('에러 발생');

이렇게 사용하면 에러객체를 사용해 정보를 확인할 수 있다.
interface Error {
name: string;
message: string;
stack: string;
}
에러 객체의 내부를 확인하면 이렇게 생겼다.
name : 오류의 타입을 설명하기 위한 이름 (초기 값 : Error)
message : 오류 메세지
stack : 스택 추적을 위한 비표준 속성(디버깅)
const err = new Error('에러발생');
console.log(err.name);
console.log(err.message);
console.log(err.stack);

이렇게 확인할 수 있다.
try catch문은 한마디로 예외 처리를 하는 코드이다.
try문을 실행하다 오류를 만나면 catch문을 실행하는 구조이다.
try{
console.log("문제없음");
}catch(err){
console.log("문제있음");
}

이렇게 오류가 없으면 try문만 실행하다가
try{
console.log("문제없음");
throw new Error();
}catch(err){
console.log("문제있음");
}

에러가 발생하면 catch문으로 넘어간다.
여기서 중요한건 catch문으로 넘어가는 시점은 에러가 발생한 그 시점이라는 것이다.
위의 코드도 첫번째 console.log가 실행된 후 catch로 넘어간다.
try{
console.log("문제없음");
throw new Error("문제있음");
}catch(err){
console.log(err.message);
}

catch문의 매개변수에는 에러객체가 들어오기 때문에 이렇게 활용할 수도 있다.
| 타입 | 설명 |
|---|---|
| SyntaxError | 문법적으로 유효하지 않은 코드 확인 시 발생하는 에러 |
| ReferenceError | 존재하지 않은 변수를 참조하면 발생하는 에러 |
| RangeError | 범위를 벗어나면 발생하는 에러 |
| TypeError | 유효한 자료형이 아니여서 연산할 수 없을 때 발생하는 에러 |
| URIError | 전역 URL 핸들링이 잘못 사용됐을 때 발생하는 에러 |
| EvalError | eval() 함수 에러, 현재는 사용되지 않음 |