window.onerror를 Chrome의 Developer console로 발화하는 방법

window.onerror



window.onerror 는, 처리를 설정해 두는 것으로 UI 처리 전체의 Uncaught Error (catch されなかった error) 를 catch 할 수가 있습니다. Global(브라우저의 window 전체)의 Error handling입니다.
window.onerror = function(errorMessage, filePath, rowNumber, columnNumber, errorObject) {
    alert(errorMessage);
};

Chrome의 Developer console에서 사용해보기



Chrome의 Developer console을 열고 다음과 같이 window.error를 정의하고 Error를 throw 해보십시오.
window.onerror = function() {
  alert('Error has occurred!');
}

throw new Error('Boom!');
> Uncaught Error: Boom!
    at <anonymous>:1:7

alert dialog가 나오지 않았습니다 ...

이것은 동기 처리에 관해서는 Global 가 아니라 Developer console 내에서 에러 처리를 완결하려고 하고 있기 때문인 것 같습니다.
반대로 말하면, window.onerror 를 발화시키기 위해서는 비동기 처리로 에러를 일으키면 된다고 말하는 것.

setTimeout을 사용하여 비동기화



setTimeout 은 ms (1/1000 초)이므로, 1초 후에 Error 를 throw 해 봅니다.
window.onerror = function() {
  alert('Error has occurred!');
}

setTimeout(function() { throw new Error('Boom!') }, 1000);

.....

나왔다!

생각하면 Node.js에서도 다음과 같이 동기화 처리라면 물론 throw 한 Error를 catch 해줍니다.
// err_test.js

try {
  throw new Error('Error has occurred!');
} catch(e) {
  console.log(e);
} 
$ node err_test.js
> Error: Error has occurred!

비동기 처리하면 node의 Context(환경)를 뚫고 Shell이 ​​status code 1을 반환했습니다.
// err_test.js

try {
  setTimeout(function() { throw new Error('Error has occurred!'); }, 1000);
} catch(e) {
  console.log(e);
}
$ node err_test.js
err_test.js:3
  setTimeout(function() { throw new Error('Error has occurred!'); }, 1000);
                          ^
shell returned 1

하나의 컨텍스트를 벗어나 그것을 포함하는 더 넓은 컨텍스트 영향을 얻으려면 비동기 처리가 하나의 키 포인트가 될 것 같습니다.

※ Node.js 의 건에 관해서는 이 기사가 매우 공부가 되었습니다.
htps : // / chbぉg. 야호오. 이. jp / p 로그 라민 g / 그럼 sc 리 pt_ 에로 r /



비동기 처리로 Context 를 일탈하지 않아도, 브라우저의 주소 바에 이하와 같이 직접 입력해, Grobal 의 Error handling 을 발화시킨다고 하는 거친 기법도 있는 것 같습니다.
javascript: throw New Error('Error has occurred!');

좋은 웹페이지 즐겨찾기