try catch는 예외가 발생할것으로 예상되는 구문에 사용하기 때문에 예외가 예상치못한 예외가 발생하면 스크립트는 중단될 수 밖에 없다.
스크립트가 중단되는 예외가 발생되더라도 발생된 예외의 정보가 저장되면 사후대처가 가능해진다.
예상못한 예외정보를 어떻게 저장할 수 있을까?
브라우저는 window.onerror 이벤트핸들러를 지원하므로 콜백함수에 예외정보를 저장할 수 있다.
window.onerror = function(message, url, line, col, error) {
// ...
};
<script>
window.onerror = function(message, url, line, col, error) {
console.log(`${message}\n At ${line}:${col} of ${url}`);
};
function readData() {
badFunc(); // 에러가 발생한 장소
}
readData();
</script>
콜백함수에서 예외에대한 정보를 서버에 저장하면 된다.