在 C++ 中抛出超出范围的异常
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/2709719/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Throwing out of range exception in C++
提问by Suugaku
This code works;
此代码有效;
int at(int index) {
if(index < 1 || index >= size)
throw 0;
return x[index];
}
Yet this doesn't
然而这并没有
int at(int index) {
if(index < 1 || index >= size)
throw std::out_of_range;
return x[index];
}
I get the error "expected primary expression before ';'". Now... it surprises me because I know std::out_of_range exists and I have
我收到错误“';'之前的预期主要表达式”。现在......这让我感到惊讶,因为我知道 std::out_of_range 存在并且我有
#include <stdexcept>
回答by doublep
Replace throw std::out_of_range;
with throw std::out_of_range ("blah");
. I.e. you need to create an object, you cannot throw a type.
替换throw std::out_of_range;
为throw std::out_of_range ("blah");
。即你需要创建一个对象,你不能抛出一个类型。