下面使用std::range_error
有什么问题?
当我编译这段代码时,我得到了一个
"syntax error :';'"
(顺便说一下,我知道函数的异常规范现在被忽略了,但这会导致语法错误吗?)
#include <stdexcept>
void function() throw(std::runtime_error) {
if(true)
throw (std::range_error);
}
答案 0 :(得分:4)
range_error
是一种类型。要抛出一个,你需要创建一个对象:
throw std::range_error("Your message goes here");
您可以像在函数的异常说明符中那样使用类型名称;但你不应该因为他们被弃用了。
答案 1 :(得分:1)
至少有两个问题......
#include <stdexcept>
std::range_error
构造函数需要字符串参数答案 2 :(得分:0)
throw
有两种用途:
作为声明。语法为throw(<exception specification>)
。
作为陈述。语法为throw exception_object;
。
您的代码正在尝试使用两者,但第二种语法错误。
在一个不相关的问题上,异常规范声明已经失宠,因为它们提供的利益相对较少,让许多用户感到困惑(因为他们不提供编译时检查)并且有更好的在C ++ 11中替换。