【问题标题】:throw syntax in exception c++异常c ++中的抛出语法
【发布时间】:2015-02-04 20:29:50
【问题描述】:

也许这是个愚蠢的问题,我是 C++ 新手:

我阅读了一些关于异常机制的信息,在一些代码中我遇到了这样一行:

throw SomeClass();

这是什么意思? 是调用类 c'tor 然后抛出该类的对象吗?

在其他示例中,我看到“throw”总是抛出一个实例(特定的字符串或 int,在这里我很困惑,因为我知道 c'tor 没有返回类型。

我不明白这句话背后的“逻辑”……

【问题讨论】:

  • 构造函数的返回类型是类型本身。 A() 返回一个 A 的实例。
  • 是调用类c'tor然后抛出该类的对象吗?:是的。
  • @RSahu 更具体地说,它调用构造函数,然后将由该调用初始化的对象抛出给构造函数。

标签: c++ exception constructor


【解决方案1】:

是的。

更具体地说,这构造了一个临时的并抛出它。

【讨论】:

    【解决方案2】:

    首先,您应该抛出一些从 std::exception 派生的实例(尽管您可能会抛出整数、c-strings、...,这通常很糟糕)。在某些情况下,您可能会抛出一个特殊异常(std:bad_alloc 就是一个例子)。

    然后,您总是通过调用构造函数来抛出一个临时实例(必须构造):throw SomeClass();

    【讨论】:

      猜你喜欢
      • 2014-06-25
      • 2022-01-17
      • 2016-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-01
      • 2015-08-04
      相关资源
      最近更新 更多