try {
// 실행할 코드
foo();
} catch (err) {
// try 코드블록에서 에러가 발생하면 이 코드 블록의 코드가 실행된다.
// err에는 try 코드 블록에서 발생한 Error의 객체가 전달된다.
console.log(err); // ReferenceError: foo is not defined
} finally {
// 에러 발생과 상관 없이 반드시 한 번 실행된다.
console.log("finally");
}
console.log("[End]"); // 프로그램이 강제 종료되지 않는다.
const error = new Error("invalid");
try {
new Error("someting wrong"); // 에러 생성
} catch (error) {
console.log(error);
}
throw 표현식;
// 외부에서 전달받은 콜백 함수를 n번만큼 반복 호출한다.
const repeat = (n, f) => {
// 매개변수 f에 전달된 인수가 함수가 아니면 TypeError를 발생시킨다.
if(typeor f !== 'function') throw new TypeError('f must be a function');
for(var i = 0; i < n; i++) {
f(i); // i를 전달하면서 f 호출
}
};
try{
repeat(2, 1);
} catch(err) {
console.log(err); // TypeError: 'f must be a function'