오류 감시 - Promise 오류 감시

1477 단어 github자바 script
지난번 에 우 리 는 JS 의 실행 오류 와 제3자 자원 로드 이상 모니터링 에 대해 이 야 기 를 나 누 었 습 니 다. 그러면 이번 에는 어떻게 포착 하 는 지 Promise 오 류 를 이야기 하 겠 습 니 다.
일단 앤 리 가 잘못 보고 하고 감시 하 는 프로젝트 FE - Monitor 환영 issue 와 star.Promise 전단 에서 의 사용 은 이미 매우 보편적 이지 만 많은 개발 자 들 이 체인 호출 에 익숙 해 졌 을 지 모 르 지만 포획 Promise 의 오 류 를 잊 어 버 렸 다.
예 를 들 면:
function forgetCatchError () {
  async()
    .then(() => {
      // code..
    })
    .then(() => console.log('forget catch error!'));
}

위의 예제 코드 async() 와 후속 두 개 then 의 코드 가 잘못 되 거나 reject 되면 오 류 는 처리 되 지 않 았 습 니 다.
오류 처 리 를 위 한 리 셋 함 수 를 사용 catch 방법 으로 지정 하지 않 았 을 때 Promise 대상 이 던 진 오 류 는 외부 코드 로 전달 되 지 않 습 니 다. 즉, 아무런 반응 이 없습니다.promise 가 reject 되 고 오류 정보 가 처리 되 지 않 았 을 때 unhandled rejection 을 던 집 니 다. 이 오 류 는 window.onerroraddEventListener("error") 에 의 해 감지 되 지 않 습 니 다.
unhandled rejection 사용 하기unhandledrejection 사건 을 감청 하면 catch 되 지 않 은 Promise 오 류 를 포착 할 수 있다.
window.addEventListener("unhandledrejection", err => {
  console.log(err.reason)

  err.preventDefault();
}, false);

 //   
 window.onunhandledrejection = function(err) {
  console.log(err.reason);
  return true;
}
addEventListener 에서 이벤트 preventDefault() 를 호출 하면 Promise 의 오 류 를 콘 솔 에 던 지지 않 고 onunhandledrejection 에서 같은 효 과 를 얻 을 수 있다.

좋은 웹페이지 즐겨찾기