【面向面试学习】如何全局捕获Native异常?

2,458 阅读1分钟

由于C++层面没有try catch机制,所以得另辟蹊径

ExceptionCheck

每次JNI调用之后都要调用(*env)->ExceptionCheck(env)检测是否发生了异常,若发现异常创建Throwable,将错误信息封装进Throwable,向上抛向Java层面,在Java层面try catch。

信号量捕获

看这篇文章有详细介绍,在网上引用量挺高的JNI Crash:异常定位与捕获处理

直接使用第三方库

爱奇艺的xCrash

参考

JNI Crash:异常定位与捕获处理