如何在 Android NDK 中使用 try-catch 语法 C++代码
How to use try-catch syntax in Android NDK C++ code?
我是Android NDK的初学者,不太了解C++。我使用C++编写了一些逻辑,然后将它们构建为 .so 文件,然后将其与 JNI 一起使用用于我的 Android 项目,但有时它会在 .so 文件中引发崩溃。
我想快速解决此问题,我想知道是否可以对我的C++代码使用 try-catch 语法?(我试过了,但它总是报告编译错误。如果是,我该怎么做?
C++代码:
JNIEXPORT void JNICALL Java_xxoo_com_xxoo_model_ARDrawModel_draw(JNIEnv * env, jobject obj) {
try {
if(controller)
{
controller->Update(/*float dt*/);
controller->DrawGLScene();
}
} catch (int a) {
LOGD("drawModel---exception");
}
}
编译错误:错误:异常处理已禁用,使用 -fexceptions 启用
是的。 您可以在 C++ NDK 代码中使用 try catch,但它不会捕获所有本机崩溃。
正如您的错误所说,您需要在编译 NDK 代码时显式启用异常功能。为此,请添加
APP_CPPFLAGS += -fexceptions
以 Application.mk 文件。
如果您想捕获所有可能的 NDK 崩溃,请查看 https://github.com/xroche/coffeecatch 库。
相关文章:
- 编译器是否必须始终删除 try-catch 块(如果它被证明是非抛出的)
- 有没有更好的方法来处理异常? try-catch块真的很丑
- 我可以使用 try catch 语句来捕获任何错误而不是具体错误吗?
- 在大型应用程序的main上使用try-catch
- RapidXML 节点在 try catch 块中具有正确的值,但它在块外为 nullptr
- 提取 try-catch 时出现运行时错误
- std::unique_ptr 在 try-catch 块中未捕获取消引用异常
- 何时删除 try-catch 块中的指针
- 是否有理由大多数/所有 try-catch 示例只对 throw 语句使用 void 子函数
- 循环try..catch ..确保输入有效或使用控制语句
- 构造函数中的异常:init() 方法、指针、大型 try/catch 或
- C++ C2509 在讲师的定义中使用 try: - catch
- 为什么未达到的 try-catch 块会增加运行时时间
- 在 C++ 中使用 try-catch 进行删除 [] 或删除操作是否必要
- ex.nested try-catch中的什么()更改
- 为什么 c++ try-catch 块不能在 ubuntu 上与 g++ 一起使用?
- 格式化文件异常被 try catch 块忽略
- 如何在 Android NDK 中使用 try-catch 语法 C++代码
- 函数try catch语法和main
- 函数的try-catch语法的区别