此C 异常语法有什么问题(std :: runtime_error)

What is wrong with this C++ exception syntax (std::runtime_error)?

本文关键字:std runtime error 问题 异常 语法 什么      更新时间:2023-10-16

下面使用std::range_error有什么问题?当我编译此代码时,我会得到

"syntax error :';'"

(顺便说一句,我知道函数的异常规范现在被忽略了,但是导致语法错误吗?)

#include <stdexcept>
void function() throw(std::runtime_error) {
  if(true)
    throw (std::range_error);
}

range_error是一种类型。要扔一个,您需要创建一个对象:

throw std::range_error("Your message goes here");

您可以像在函数异常指定符中使用类型名称;但是您不应该因为不弃用。

至少有2个问题...

  • 您需要#include <stdexcept>
  • std::range_error构造函数需要一个字符串参数

throw有两种用途:

  1. 作为声明。语法是throw(<exception specification>)

  2. 作为语句。语法是throw exception_object;

您的代码试图两者都使用,但是第二个语法是错误的。

在无关的问题中,异常规范声明失去了好处C 11中的替换。