gpt4 book ai didi

c++ - 在我自己的类中捕获并处理所有异常

转载 作者:行者123 更新时间:2023-11-28 07:17:05 25 4
gpt4 key购买 nike

大家好,抱歉我的英语不好!

如何做上面的标题?

例如,我有一个类包含一些可以抛出异常的函数:

class cl {
public:
void f1();
void f2();
};

void cl::f1()
{
// throw exception
}

void cl::f2()
{
// throw exception
}

我需要处理它们。

除了像这样的代码之外,是否有任何其他方法可以在代码的一个地方处理异常(在我的类中抛出):

void cl::f1()
{
try
{
// throw exception
}
catch (...)
{
// handling
}
}

void cl::f1()
{
try
{
// throw exception
}
catch (...)
{
// handling
}
}

或者这个:

int main()
{
cl c;
try
{
f1();
f2();
}
catch(...)
{
// handling
}
}

?

提前致谢!

最佳答案

Are there any other method to handle exceptions (that throws in my class) in one place of the code except code like this:

在我看来,您通常只会在以下情况下处理异常:

  • 您可以补救它,即对此采取一些措施,例如允许用户选择不同的文件。
  • 您可以添加其他信息。

对于后一种情况,这意味着从处理程序中抛出一个新的异常(可能是不同类型的)。​​

如果以上都不成立,让它传播到可以处理的级别。在您的情况下,我不会在 f1 和 f2 中进行 try/catch,而只会在调用站点(在 main 中)进行。

您可能会问是否不能(不应该)在 catch 处理程序中执行某些清理工作。如果/当使用堆栈/作用域清理 see RAII 时,我个人从未发现这是必要的.我/我们通常在最高级别的每个线程都有一个捕获处理程序,这只是执行日志记录。我们主要捕获(并使用异常)运行时错误。对于逻辑错误,我们使用断言(即使在 Release模式下),但这可能(并且已经)经常争论。

关于c++ - 在我自己的类中捕获并处理所有异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20064448/

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