编写C ++没有例外?

时间:2014-10-30 04:23:53

标签: c++ exception

This answer提到了两种处理C ++库(如Qt)的方法,它不是异常安全的:

  1. 将其隔离在异常安全的包装器中
  2. 放弃例外并适应其风格
  3. 答案详细说明了第一个选项,但第二个选项的后果是什么:放弃例外?

    在没有例外的情况下编写C ++时,如何限制使用该语言?例如,标准库的某些部分是否不安全使用?

    (特别是,我假设在std :: bad_alloc的情况下,我别无选择,只能让我的程序退出?)

1 个答案:

答案 0 :(得分:2)

这并不难。事实上,我认为Result<T>风格(也称为expected<T> in Andrei's talk,但我的灵感来自Rust's version,特别是try! macro,除了我没有模板{{ {1}}变体(对于失败的函数,所有错误都相同))比使用异常更容易

你真正必须放弃的一件事是构造者做一些可能失败的事情。相反,使用命名的构造函数idiom,并在完成之后仅使用非常多聚合的构造函数。

Err而言,只需让它通过展开来杀死进程。