菜鸟教程小白 发表于 2022-12-13 13:05:59

javascript - 在 Obj C 中捕获 React Native 错误


                                            <p><p>我希望防止我的 React Native 应用程序中任何意外引发的异常导致整个应用程序崩溃。</p>

<p>有什么方法可以处理在 obj c 端的 React Native JS 中引发的异常。
由于该过程超出了 App Delegate,简单的 <code>@try/@catch</code> 根本无法解决问题。</p>

<p>我已经实现了 <code>NSSetUncaughtExceptionHandler</code>,我已将其设置为提供故障堆栈跟踪,但在优雅地处理 RN 问题方面还不够</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我不得不进行大量研究,因为它的文档非常少。最后,我的一个 friend 帮我解决了这个问题。</p>

<p>你需要设置</p>

<pre><code>//This will tell react native that you are taking responsibility of fatal crashes.
RCTSetFatalHandler(^(NSError *error) {});
</code></pre>

<p>此外,创建一个 RCTExceptionsManager 实例并将其传递到您的类的 extraModulesForBridge 方法中,遵守 RCTBridgeDelegate 协议(protocol)。</p>

<pre><code>- (NSArray *)extraModulesForBridge:(RCTBridge *)bridge {
    return @[ initWithDelegate:self];
}
</code></pre>

<p>您需要实现的两个方法是:</p>

<pre><code> - (void)handleSoftJSExceptionWithMessage:(NSString *)message stack:(NSArray *)stack exceptionId:(NSNumber *)exceptionId;
- (void)handleFatalJSExceptionWithMessage:(NSString *)message stack:(NSArray *)stack exceptionId:(NSNumber *)exceptionId;
</code></pre>

<p>这使您可以完全控制致命异常处理,并且 Reactnative 崩溃不会使应用程序崩溃。 </p></p>
                                   
                                                <p style="font-size: 20px;">关于javascript - 在 Obj C 中捕获 React Native 错误,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/35582141/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/35582141/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: javascript - 在 Obj C 中捕获 React Native 错误