카테고리 없음

[Note_deepDive]47장 자바스크립트 에러처리

bomsbro 2022. 9. 23. 11:47

47.1 에러 처리의 필요성

- 에러가 발생하면 프로그램은 강제로 종료된다. try catch finally를 사용하여 강제종료를 막고 에러를 핸들링 할 수 있다.

 

47.2 try catch finally문

- try: 에러가 발생할 수 있는 구문이 들어간다.

- catch: 에러가 발생한 후 처리 구문이 들어간다.

- finally: 에러 발생여부가 결정된 후 무조건 처리되어야 하는 구문이다.

 

47.3 Error객체

- Error객체는 new Error("메시지"); 로 생성한다.

- Syntax, Reference, Type, Range, URI, Eval Error등 다양한 생성자 함수가 존재한다. 모두 Error.prototype을 상속받는다. log에서 에러를 표시할때 Syntax Error: ~~~ 이런 식으로 나오게 할 수 있다.

 

47.4 throw문

 - 에러 발생 시 해당 함수 caller에게 error를 전파하는데 사용한다. 

 

47.5 에러의 전파

 - 에러는 caller 방향으로 전파된다. 그래서 중간에 catch를 해주어야 에러가 발생하지 않는다.

 - 주의해야될 점은 setTimeout이나 프로미스 후속처리 메서드의 콜백 함수는 호출자가 없다는 것이다..? 후속처리 메서드는 태스크 큐나 마이크로 태스크 큐에 저장되었다가 콜스택이 비었을때 이벤트 루프에 의해 콜스택에 푸시되는데, 푸시되어 실행될 당시 콜스택에 해당 콜백함수만 있으므로 throw할 대상이 존재하지 않는다. 그래서 꼭 그 콜백함수 내에서 에러 처리를 해주어야 에러가 나지 않는다.

 


궁금한점

1.try catch finally는 ecma 무슨 버전 feature인지?

2. promise 에러 처리의 한계는 무엇을 말하는 건지?

3. 싱글스레드 이벤트드리븐 콜백함수 동작원리 확실하게 알 것.

4. 태스크 큐와 마이크로 태스크 큐의 차이? 그리고 콜 스택과의 관계?

5. 이벤트 루프?