c++ - 在几个地方处理整个异常层次结构的好方法

标签 c++ exception coding-style

我很确定这里有类似的问题,但我找不到。

假设我有几个函数,它们可能会抛出整个异常层次结构 - 假设有 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/

相关文章:

c++ - 对 'std::istreambuf_iterator' 的用法感到困惑

C++:模板不能从另一个类工作

c++ - 范围锁定如何工作?

c# - 为什么 .NET 异常没有被 try/catch block 捕获?

mysql - 数据库列中的 CSV - 不是个好主意吗?

c# - 在一行代码中将对象列表复制到另一个类型列表

android - 在 Android Studio 中用 C++ 编写应用程序?

python - 如何在Python中引发异常?

c++ - Qt 5 是否支持异常?

java - 这两个例子中哪一个是更好的代码设计?