This answer提到了两种处理C ++库(如Qt)的方法,它不是异常安全的:
答案详细说明了第一个选项,但第二个选项的后果是什么:放弃例外?
在没有例外的情况下编写C ++时,如何限制使用该语言?例如,标准库的某些部分是否不安全使用?
(特别是,我假设在std :: bad_alloc的情况下,我别无选择,只能让我的程序退出?)
答案 0 :(得分:2)
这并不难。事实上,我认为Result<T>
风格(也称为expected<T>
in Andrei's talk,但我的灵感来自Rust's version,特别是try!
macro,除了我没有模板{{ {1}}变体(对于失败的函数,所有错误都相同))比使用异常更容易 。
你真正必须放弃的一件事是构造者做一些可能失败的事情。相反,使用命名的构造函数idiom,并在完成之后仅使用非常多聚合的构造函数。
就Err
而言,只需让它通过展开来杀死进程。