d更好C与异常
#18493
期揭露了betterC
实现中的疏忽:-betterC
不支持触发
异常,但却不要求不抛
环境.#8184
修复了自动生成
隐式加到聚集字段后复制
的试抓,但仍有基本问题.此PR
试修复它.
我和AA/WB
邮件讨论:
我:打算让-betterC
在用引用计数
异常,还是-betterC
总是不抛
?
WB:在可预见未来,betterC
表示不抛.
AA
:如果希望betterC
只使用nothrow
,应该限制
它,即拒绝
非"nothrow"
的代码.代码语义
不应依赖于使用的编译开关
.
WB
:betterC
假定nothrow
是合理的,试throw
时,它都会诊断
出错误,并且它已假设nothrow
了.
AA
:这和把-betterC
代码和非betterC
代码链接在一起有什么关系?
WB
:betterC
要点是不需要runtime
链接,它与非betterC
代码链接需要runtime
.如果这样做,就像链接C代码
到D代码
一样.它完全不知道异常
,它不会抓它们,在展开栈时,也不会执行终
块或析构器
.
我:DIP1008
怎么样?有没有计划让它在-betterC
中可用?
WB
:没有,因为在runtime
中,展开
异常代码仍然是必需的,并且在标准C库
中也没有.
一般,修复
是极其简单的:添加nothrow
属性到模块顶部
.
还需要修改druntime
的object.d
,因为,尽管-betterC
不与druntime
或phobos
链接,但它仍然导入object.d
.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现