我很确定这里有类似的问题,但我找不到。
假设我有几个函数,它们可能会抛出整个异常层次结构 - 假设有 N 种类型的异常类。
现在,有没有一种很好的方法来处理所有这些异常,而不是使用 N catch
block 多次编写相同的代码?
我实现此目的的(非常丑陋的)方法是使用宏。其他想法?
所有函数都有不同的输入/输出参数和返回类型
编辑
是的,所有异常都有相同的基类——它是一个层次结构。但是不同的类有不同的附加信息。
例子:
try
{
object->execute( ... );
}
catch( type1& ex )
{
// ...
}
//...
catch( typeN& ex )
{
// ...
}
// some other code
// and again:
try
{
object->do_something_else( ... );
}
catch( type1& ex )
{
// ...
}
//...
catch( typeN& ex )
{
// ...
}
// and so on
最佳答案
创建一个名为 handleExceptions(Exception&)
的函数,它引用异常的基类。
在那个函数中你可以做任何你想做的事,除了异常(exception),例如调用一些特定于 Exception
子类的虚方法。您还可以使用 dynamic_cast
等定义实际的异常。
关于c++ - 在几个地方处理整个异常层次结构的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11291650/