예상치 못한 사용자 입력, 서버 응답 이슈 등 에러가 발생하는 원인은 무궁무진하다.
JavaScript에선 try...catch 문법을 사용해서 예외 처리를 한다.try {
	//code
} catch (err){
	//Error Handling
}
try...catch의 동작 알고리즘은 다음과 같다.1. try {} 내부에 작성한 코드 실행
2. Error가 없는 경우, try 내부의 마지막 줄 코드까지 실행, catch 실행 X
3. Error가 있는 경우, try 내부의 코드 실행 중지, catch(err){} 넘어간다.
   여기서 매개변수 err은 에러 발생에 대한 설명이 담긴 Error 객체를 포함하고 있다.
//try...catch Exam
try {
	alert("try block Start");
	
	//IamErr; 정의되지 않은 변수
	
	alert("try block End");
	//코드에 Error가 없는 경우, try {} 코드 마지막 줄까지 실행
	//error가 없었기에 catch(err){} 실행되지 않는다.
	//코드 실행 중 Error 발생하면, try {} 실행 중지
	//catch(err){} 실행된다.
} catch(err){
	alert("에러가 발생했습니다.")
}
throwthrow 예외를 발생 시킬 때, 객체를 명시할 수 있는데 catch 블록에서 해당 객체의 속성을 참조할 수 있게 된다.function UserException(message){
	this.massage = massage;
	this.name = "UserException";
}
function getMonthName(mo){
	mo = mo - 1; //월 숫자와 배열 index와 맞추기 위한 용도
	const Months = [
		"1월",
		"2월",
		"3월",
		"4월",
		"5월",
		"6월",
		"7월",
		"8월",
		"9월",
		"10월",
		"11월",
		"12월"
	];,
	if (Months[mo] !== undefined){
		return Months[mo];
	} else {
		throw new UserException("존재하지 않는 월 입니다.");
	}
}
try {
	var month = 15; //1년 12개월 중 15월은 없기 때문에 예외 발생
	var monthname = getMonthName(month);
} catch(err){
	var monthname = "unknown";
	console.log(err.massage, err.name); //오류 처리기에 예외 객체 전달
}