ex)
function sum(a, b) {
if (typeof a !== 'number' || typeof y !== 'number') {
throw '타입이 맞지 않습니다.';
}
console.log(a + b);
}
sum(1, ‘4');
결과 : Uncaught 타입이 맞지 않습니다.
9-1. try, catch
ex)
function f2() {
console.log('this is f2 start');
throw new Error('에러'); // Error 객체 - 해당하는 콜스택 정보가 담겨있다.
console.log('this is f2 end'); // 실행되지 않음.
}
function f1() {
console.log('this is f1 start');
try {
f2();
} catch(e) {
console.log(e);
}
console.log('this is f1 end');
}
f1();
결과 :
this is f1 start
this is f2 start
Error: 에러
at f2 (<anonymous>:3:11)
at f1 (<anonymous>:10:9)
at <anonymous>:17:1
this is f1 end
해석 :
f1 함수에서 f2를 호출하는데, f2 함수에서 에러가 발생
에러가 발생한 지점 이후의 콜스택에 쌓인 작업들은 실행되지 않는다.
따라서 에러가 발생할 수 있는 부분을 try() 함수내에 삽입
try() 내부에 에러가 발생 -> 그 에러를 어떻게 처리할 것인지 catch() 부분에 작성하여 catch 부분에서 처리.
콜스택에 쌓인 작업들은 에러가 발생해도 중단되지 않고 모두 실행된다.
그리고 에러를 throw를 통해 발생시킬 때, new를 통해 Error객체를 생성하고 그 안에 인자로 메세지를 작성
에러 객체로 에러를 발생시키면 해당하는 콜스택 정보가 담겨 있기 때문에 어떤 파일에 몇 번째 줄에 에러가 발생했는지 볼 수 있다.