【问题标题】:Catch-all handler detect sub class exceptions in C++包罗万象的处理程序检测 C++ 中的子类异常
【发布时间】:2019-01-27 08:38:59
【问题描述】:

大家好,正在努力清楚地提出我的问题:

你知道 C++ 中的 catch all 处理程序(见下文)

try { /* */ } catch (...) { /* */ }

如果还有父类错误(例如std::exception),检测子类错误(例如std::bad_alloc)? (由于多态性/继承)

【问题讨论】:

  • 本身并不是一个可怕的问题。但我觉得有一个X to this Y
  • 我想知道类多态性/继承是否也适用于 catch-all/final 异常检查。怎么会是 XY 问题?
  • 好吧。由于您无法以任何允许您与之交互的方式获取对异常对象的引用,因此在 catch all 处理程序中。它值得一个“你为什么要问?”这表示一个 XY 问题。

标签: c++ oop exception error-handling try-catch


【解决方案1】:

Catch-all 子句捕获 所有 否则未捕获的异常,无论类型如何。

【讨论】:

  • 使用 std::cout
  • @solarblue 您无权访问 catch all 子句中捕获的实例。
  • @πάνταῥεῖ 但是有std::current_exception
  • 那么对于std::current_exception,父类异常与子类异常的重叠是否会像特定父类异常一样发生? (具体父类异常情况:)catch (std::exception& e) { std::cout << e.what(); }
  • @solarblue 使用std::current_exception,您将再次获得指向当前异常的“指针”,无论其类型如何。如果抛出的对象是std::exception 的子类,那么它 std::exception(请记住,继承是“是”关系,子类是 i> 父类)。
猜你喜欢
  • 2018-11-09
  • 2013-02-09
  • 2011-07-10
  • 1970-01-01
  • 1970-01-01
  • 2020-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多