gpt4 book ai didi

c++ - 异常类中的 Setter

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:08:54 24 4
gpt4 key购买 nike

在异常类中使用 setter 成员函数可能意味着什么?使用 setter 的动机是有时在 throw 点没有足够的可用数据以便在 catch 点正确处理异常;因此在展开堆栈时必须添加附加信息。

最佳答案

查看 Boost.Exception图书馆,最准确地说是this page在标题为将任意数据添加到事件异常对象的段落中:

void parse_file( char const * file_name )
{
boost::shared_ptr<FILE> f = file_open(file_name,"rb");
assert(f);
try
{
char buf[1024];
file_read( f.get(), buf, sizeof(buf) );
}
catch(boost::exception & e )
{
e << boost::errinfo_file_name(file_name);
throw;
}
}

我个人认为该技术非常有效。修改异常(添加上下文)并重新抛出。

与 Java 不同,在 C++ 中,您可以决定在构建异常时是否包含堆栈帧,因此您不会承担丢失它的风险,并且它仍会引用抛出异常的代码点第一个异常(exception),同时具有重要的上下文。

关于c++ - 异常类中的 Setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4126088/

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