gpt4 book ai didi

android - 在 Android native 库中尝试 Catch 失败

转载 作者:行者123 更新时间:2023-12-03 16:48:40 24 4
gpt4 key购买 nike

当我在 native 库中执行 throw 命令时,我的 Android 应用程序崩溃了。 Android 不支持这些调用吗?它永远不会达到目标。

try
{
__android_log_print(ANDROID_LOG_ERROR, "nativeLib", "throw");
throw;
}
catch (...) {
__android_log_print(ANDROID_LOG_ERROR, "nativeLib", "catch");
}

我最近从 gnuSTL_shared 切换到 c++_shared,我不确定这是否与我的问题有关。

开发人员指南说 gnuSTL_shared 默认启用了异常,但 c++_shared 没有。如指南中所述,我已包含 -fexceptions 标志。
https://developer.android.com/ndk/guides/cpp-support.html

最佳答案

这是预期的行为。从 C++ 标准:

If no exception is presently being handled, executing a throw-expression with no operand calls terminate()(15.5.1).



如果你想让它捕获你需要扔东西:
try
{
__android_log_print(ANDROID_LOG_ERROR, "nativeLib", "throw");
throw new std::exception();
}
catch (...) {
__android_log_print(ANDROID_LOG_ERROR, "nativeLib", "catch");
env->ExceptionCheck();
}

关于android - 在 Android native 库中尝试 Catch 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41880044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com