gpt4 book ai didi

c++ - main前后的异常处理

转载 作者:可可西里 更新时间:2023-11-01 17:03:17 24 4
gpt4 key购买 nike

是否可以在这些场景中处理异常:

  1. 在进入 main() 之前从构造函数中抛出
  2. 在离开 main() 后从析构函数中抛出

最佳答案

  1. 您可以使用内部的 try-catch 来包装您的构造函数。
  2. 不,您应该绝不允许在析构函数中抛出异常。

如何在构造函数中嵌入 try-catch 的有趣鲜为人知的特性:

object::object( int param )
try
: optional( initialization )
{
// ...
}
catch(...)
{
// ...
}

是的,这有效的 C++。这里的额外好处是 try 将捕获异常由类的数据成员的构造函数抛出,即使它们没有在 ctor 初始化程序中提及或没有 ctor 初始化程序:

struct Throws {
int answer;
Throws() : answer(((throw std::runtime_error("whoosh!")), 42)) {}
};

struct Contains {
Throws baseball;
Contains() try {} catch (std::exception& e) { std::cerr << e.what() << '\n'; }
};

关于c++ - main前后的异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2026287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com