【问题标题】:Catch a type error in C++在 C++ 中捕获类型错误
【发布时间】:2010-11-23 17:40:52
【问题描述】:

我如何检查结果是否是正确的类型(int、float、double 等),然后抛出并捕获异常以防万一?

谢谢大家,

弗拉德。

【问题讨论】:

    标签: c++ types try-catch typeerror


    【解决方案1】:

    您能否更详细地说明是什么给了您“结果”,您也许可以从那里确定您需要什么,并且更有可能以更好的方式。

    如果您真正想要的只是检查类型,请使用typeid。 更多信息here

    按照丹尼尔的编辑帖子模型,在陈述其他内容后实际回答问题......

    来自我的其他评论:

    您必须先这样做 只是结果。检查溢出 之后不是一个好主意。做个检查 在添加之前查看数字 它们会溢出或限制输入 小于最大值的一半 类型

    【讨论】:

      【解决方案2】:

      使用 C++ 在运行时无法知道这一点。这些将是编译时错误。

      要回答您的第二个问题,您必须手动检查缓冲区溢出/下溢或使用更合适的数据类型。

      【讨论】:

      • +1,但恰恰相反 - 在运行时几乎不可能 知道这一点,否则代码将无法编译 ;-)
      • 使用模板实例时除外,模板参数可以是任何类/类型,甚至是编写模板时不存在的类/类型。
      • 但是模板不在运行时。它们也是在编译时生成的。
      • 这一切都取决于他从什么地方得到这个结果。如果它是指向某个东西的指针,他从其他地方得到了一个 void* 的东西,除非你被告知,否则你不会知道它是真正的类型。
      【解决方案3】:

      你会得到最接近的是dynamic_cast

      【讨论】:

      • dynamic_cast 不适用于内置类型。它仅适用于多态类型的引用/指针。
      • 这就是为什么我说你会得到的 最接近 是 dynamic_cast(不是“答案是 dynamic_cast”,请注意区别)。我提到 dynamic_cast 是因为我不确定 OP 是在要求 just 内置函数还是更大的类型集。
      猜你喜欢
      • 2016-08-12
      • 1970-01-01
      • 1970-01-01
      • 2013-12-03
      • 1970-01-01
      • 2011-08-19
      • 1970-01-01
      • 2018-01-31
      相关资源
      最近更新 更多