JavaScript - 8. 예외처리

isk·2022년 11월 4일

JavaScript

목록 보기
8/39

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객체를 생성하고 그 안에 인자로 메세지를 작성

에러 객체로 에러를 발생시키면 해당하는 콜스택 정보가 담겨 있기 때문에 어떤 파일에 몇 번째 줄에 에러가 발생했는지 볼 수 있다.

0개의 댓글