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);