【发布时间】:2011-07-20 01:22:33
【问题描述】:
我有一个愚蠢的问题。我读了这篇关于 std::exception http://www.cplusplus.com/doc/tutorial/exceptions/
的文章在catch (exception& e) 上,它说:
我们放置了一个处理程序,它通过引用捕获异常对象(注意类型后面的 & 符号),因此它也捕获从异常派生的类,例如我们的 myex 类 myexception 对象。
这是否意味着通过使用“&”也可以捕获父类的异常?我认为 & 是在 std::exception 中预定义的,因为传递 e (std::exception) 作为引用比传递对象更好。
【问题讨论】:
-
我不明白你的最后一段。通过引用传递与异常无关,是 C++ 中允许运行时多态性的基础。
-
答案是否定的——您可以捕获的对象必须源自您正在捕获的异常类型,正如您在帖子中提到的那样。这展示了 IS-A 关系。如果只在 catch 子句中指定子类,则无法捕获父类。
标签: c++