[RN-CheatSheet] Unhandled promise rejection 트래킹하기

HYUNGU, KANG·2022년 10월 12일
0

React-Native-CheatSheet

목록 보기
9/18

try/catch 혹은 .catch() 로 핸들링 하지 않은 프로미스 요청에서 에러가 발생하는 경우, Unhandled promise rejection 워닝이나 미처 놓치게 되는 오류가 있을수도 있다.

만약 SDK를 사용하고 있고, 로거가 켜져있다면 특히나 더 거슬리는 요인이 되기도 한다.
특정 unhandled 에러만 걸러내거나 로그를 찾아서 봐야하는 경우, 아래와 같은 방식으로 override 가 가능하다.

// 기본 Promise rejection tracking 옵션
const defaultOptions = require('react-native/Libraries/promiseRejectionTrackingOptions').default;

// 기본 에러 핸들러
const defaultHandler = defaultOptions.onUnhandled;

// 새로운 핸들러 설정
defaultOptions.onUnhandled = (_: number, rejection: unknown) => {
  if(reject instanceof SomeSDKError) {
    console.log('[MY_HANDLER] Promise unhandled error', rejection);
  } else {
    defaultHandler(_, rejection);
  }
}

// 옵션 재설정
require('promise/setimmediate/rejection-tracking').enable(defaultOptions);
profile
JavaScript, TypeScript and React-Native

0개의 댓글