在C++中抛出范围异常

Suu*_*aku 25 c++ exception

这段代码有效;

int at(int index) {
  if(index < 1 || index >= size)
    throw 0;

  return x[index];
}
Run Code Online (Sandbox Code Playgroud)

但事实并非如此

int at(int index) {
  if(index < 1 || index >= size)
    throw std::out_of_range;

  return x[index];
}
Run Code Online (Sandbox Code Playgroud)

我得到错误"在'之前预期的主要表达';'".现在......它让我感到惊讶,因为我知道std :: out_of_range存在并且我有

#include <stdexcept>
Run Code Online (Sandbox Code Playgroud)

dou*_*lep 75

替换throw std::out_of_range;throw std::out_of_range ("blah");.即你需要创建一个对象,你不能抛出一个类型.