c++异常try catch

发布于 2019-09-16 17:07:31

按照上面的文档实验了try catch(开启了c++ features),运行throw_exceptions后显示信息跟文档不同,标识没有正常的捕获到我抛出的异常,请问是什么问题?
\ | /
- RT - Thread Operating System
/ | \ 4.0.1 build Sep 16 2019
2006 - 2019 Copyright by rt-thread team
lwIP-2.1.0 initialized!
netif_set_up[I/sal.skt] Socket Abstraction Layer initialize success.
msh />throw_exceptions
there is no err
terminate called after throwing an instance of 'double'
terminate called recursively
thread:tshell abort!




查看更多

关注者
0
被浏览
790
5 个回答
tyustli
tyustli 2019-09-16
文档中有提到,如果是 GCC 的话,要检查你的链接脚本有没有为异常分配段
sophia
sophia 2019-09-16
    本帖最后由 aozima 于 2019-9-17 11:40 编辑


tyustli 发表于 2019-9-16 20:28
文档中有提到,如果是 GCC 的话,要检查你的链接脚本有没有为异常分配段

link.lds已有异常段的定义
。。。
/* .ARM.exidx is sorted, so has to go in its own output section.  */
__exidx_start = .;
.ARM.exidx :
{
*(.ARM.exidx* .gnu.linkonce.armexidx.*)

/* This is used by the startup in order to initialize the .data secion */
_sidata = .;
} > ROM
__exidx_end = .;


。。。
sophia
sophia 2019-09-17
throw后实际会调用__cxa_throw(),然后再调用terminate(),很奇怪为什么没有catch到异常?
定义在libstdc++.a(env_released_1.1.2\env\tools\gnu_gcc\arm_gcc\mingw\arm-none-eabi\lib\armv7e-m)
sophia
sophia 2019-09-17
已经解决
参考资料
aichip-sai
aichip-sai 2020-07-08

您好,sophia!
请问您这边怎么解决的这个问题?

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览