【发布时间】:2012-07-02 10:13:29
【问题描述】:
我很确定这里有类似的问题,但我找不到。
假设我有几个函数,它们可能会引发整个异常层次结构 - 比如说 N 种异常类。
现在,有没有一种很好的方法来处理所有这些异常,而不是用 N catch-blocks 编写多次相同的代码?
我实现这一点的(非常丑陋的)方法是使用宏。其他想法?
所有函数都有不同的输入/输出参数和返回类型
编辑
是的,所有异常都有相同的基类——它是一个层次结构。但是不同的类有不同的附加信息。
例子:
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
【问题讨论】:
-
如果您的异常具有相同的基类,您可以只编写一个处理程序。不清楚你想在哪里处理来自不同功能的异常。
-
@KirillKobelev - 它们具有相同的基类,是的,它是一个层次结构。但是不同的类有不同的附加信息。我将编辑我的问题以获取更多详细信息。
标签: c++ exception-handling coding-style