HarmonyOS 系统库中含有std::exception类型信息导致catch异常

1、在DevEco Studio中新建一个Native C++项目。

2、在生成的CMakeLists.txt的target_link_libraries中添加libbundle_ndk.z.so。

3、在生成的napi_init.cpp的Add代码块中加入如下代码:

try {
  throw std::invalid_argument("test_exception");
} catch (std::exception &) {
}

4、运行entry,点击中心的Hello World就会崩溃。

预期的效果是,因为std::invalid_argument是std::exception的派生类应当能被捕获,这里查了一下发现是libbundle_ndk.z.so中也有std::exception的type_info导致的(见下图),把libbundle_ndk.z.so从链接库中去掉即可正常运行。

HarmonyOS 系统库中含有std::exception类型信息导致catch异常 -鸿蒙开发者社区

HarmonyOS
3天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

1、将一个指向一个基类对象的指针或引用转换为指向派生类对象的指针或引用时,如果类型转换是不安全的或不合法的就会引发异常。

2、

try {
  throw static_cast<std::exception>(std::invalid_argument("test_exception"));
} catch (const std::exception &) {
}
分享
微博
QQ
微信
回复
3天前
相关问题
HarmonyOS 处理含有异常字符的url
60浏览 • 1回复 待解决
HarmonyOS catch error问题
309浏览 • 1回复 待解决
HarmonyOS 图片exif信息获取异常
533浏览 • 2回复 待解决
烧录捕获到异常信息,怎么解决?
8489浏览 • 2回复 待解决
HarmonyOS occur exception need return错误
10浏览 • 1回复 待解决
编译报错Found exception如下
1486浏览 • 1回复 待解决
HarmonyOS 系统信息获取方式
604浏览 • 1回复 待解决
HarmonyOS 数据的beginTrans使用异常
193浏览 • 1回复 待解决
如何监听系统应用异常
1711浏览 • 1回复 待解决
获取系统当前时间戳异常
238浏览 • 1回复 待解决
崩溃信息中缺少详细的系统信息
875浏览 • 1回复 待解决
系统日历方法使用会抛异常
468浏览 • 0回复 待解决