Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

roadmap

7. 예외 처리 본문

web programming/JavaScript

7. 예외 처리

kdw_w 2020. 8. 5. 22:47

 

 

 

 

 

자바스크립트에서는 런타임 에러가 나타날 때마다 예외를 발생시킨다

또한 프로그램에서 throw문을 사용하여 명시적으로 예외를 발생시킬 수도 있다

 

1
2
3
4
5
6
7
function factorial(x) {
    if (x < 0throw new Error("x must not be negative");
    for (var f = 1; x > 1; x--) {
        f = f*x;
    }
    return f;
}
cs

콘솔창 출력

 

 

 

 

 

try/catch/finally 문은 js의 예외 처리 기법이다. try절은 처리할 예외가 발생할지도 모를 블록을 정의한다.

catch 절은 try 블록에서 예외가 발생하는 경우 호출되는 블록이다. 

finally 절은 try의 예외와 관계없이 항상 실행이 보장되어야 할 코드를 넣는다.

1
2
3
4
5
6
7
8
    try {
      var n = prompt("Please enter a positive integer""");
      var f = factorial(n);
      alert(n + "! = " + f);
    }
    catch (e) {
      alert(e);
    }
cs

 

예외가 발생하면 자바스크립트 인터프리터는 정상적인 프로그램 실행을 중단하고 가장 가까운 예외 처리기로 넘어간다.

코드블록이 예외 처리기(catch절)와 연결되어 있지 않으면, 인터프리터는 바로 상위 단계를 감싸고 있는 코드 블록에 catch절을 확인한다. 처리기를 찾을 때까지 이 과정이 반복된다.

 

만일 함수 내부에 try/catch/finally 문이 없다면 예외가 함수를 호출했던 블록으로 전파되어 올라간다.

이것을 반복해서 자바스크립트 언어적인 구조를 따라서, call stack을 따라서 예외가 올라간다.

 

그래도 아무런 예외 처리기도 찾을 수 없으면 이 예외는 에러로 취급되어 사용자에게 보고된다.

 

 

 

 

'web programming > JavaScript' 카테고리의 다른 글

9. 프로토타입, 클래스, 인스턴스  (0) 2020.08.07
8. 변수의 유효 범위(scope chain)  (0) 2020.08.07
6. 배열  (0) 2020.08.05
5. 객체  (0) 2020.08.05
4. 값과 참조  (0) 2020.08.05