range_error有人可以解释,out_of_range和一对overflow_errorand之间的区别是什么underflow_error,我什么时候应该使用它们?它们看起来都是一样的。
out_of_range:它报告由于尝试访问超出定义范围的元素而导致的错误。range_error:它报告由于某些计算中的浮点值太大或太小而无法表示而出现的错误。如果值是整数类型,std::underflow_error或者std::overflow_error应该使用。overflow_error:它报告由于某些计算中的整数值具有太大的正值而无法表示而出现的错误。
具体来说,我有一个功能,
template<typename T>
void write_integer(const T &n) {
if(n < 0) { throw ??? }
if(some_limit < n) { throw ??? }
哪里T是整数类型;该函数对 进行一些边界检查n,以查看它是否在一定范围内;如果不是,我想抛出一些异常。我很困惑,因为:
out_of_range听起来像是用于索引和数组边界检查,我没有这样做。range_error似乎是花车?(但是为什么,在像 C++ 这样的语言中呢?)underflow_error和overflow_error?这些真的合适吗?