【问题标题】:I need UnSupportedOperationException in C++我需要 C++ 中的 UnSupportedOperationException
【发布时间】:2013-10-18 16:27:10
【问题描述】:

我需要像 C++ 中的 UnSupportedOperationException 这样的异常,但找不到。我希望它会在 STL 中,但似乎不存在。我应该通过从 STL 异常类派生来自己创建一个吗?

为什么需要它?:我正在实现复合设计模式,它需要在基类中抛出 unsupportoperationexception。 Jave 有,但 c++ 没有。

【问题讨论】:

  • 这里:throw UnSupportedOperationException;。希望你catch它。
  • 如果您没有幽默感,请参阅 Federico 的回答。丹尼尔也是。无论哪种方式,我们都不知道您到底需要什么,这可能就像写 class UnSupportedOperationException {}; 或实际找出您真正的问题一样微不足道。
  • 我猜 -1 是为了“愤怒感” :) 我确实说过我为什么需要它,请阅读 OP。
  • 为什么需要这个名字?标准 C++ 库有一组可以使用的预定义异常,按类别命名。要么直接使用它们,要么如果你认为它们有用,从更有意义的类继承你自己的异常类;对于您的情况,我会选择std::logic_error

标签: c++ exception stl


【解决方案1】:

也许您应该解释一下您希望“UnSupportedOperationException”具体做什么。

无论如何,如果默认库中没有某些内容,您应该使用外部库或自己创建它。

在这种情况下,最简单的方法就是你说的那个。

【讨论】:

    【解决方案2】:

    通常,您应该避免创建异常类。使用与您的情况最匹配的类,例如

    throw std::runtime_error( "foo() is unsupported" );
    

    只有当你想捕获一个异常并且你知道如何处理这种情况时,你才需要派生你自己的类。在这种情况下,从最符合您的情况的标准库的异常类派生。检查提供的exception categories

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-24
      • 2010-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-30
      • 2012-03-29
      • 1970-01-01
      相关资源
      最近更新 更多