gpt4 book ai didi

c++ - out_of_range、range_error 和 over/underflow_error 之间的区别?

转载 作者:可可西里 更新时间:2023-11-01 17:54:31 26 4
gpt4 key购买 nike

谁能解释一下 range_errorout_of_range 以及 overflow_errorunderflow_error 之间的区别是什么,我什么时候应该使用它们?它们看起来都一样。

根据 cppreference.com :

  • out_of_range:它报告由于尝试访问超出定义范围的元素而导致的错误。
  • range_error:它报告由于某些计算中的浮点值由于大小太大或太小而无法表示而产生的错误。如果该值具有整数类型,则应使用 std::underflow_errorstd::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 似乎是为了 float ? (但为什么要用 C++ 这样的语言呢?)
  • underflow_erroroverflow_error?这些真的合适吗?

最佳答案

来自标准:

range_error:range_error 类定义了作为异常抛出的对象类型,以报告内部计算中的范围错误

out_of_range:out_of_range 类定义了作为异常抛出的对象类型,以报告参数值不在其预期范围内

overflow_error:overflow_error 类定义了作为异常抛出以报告算术溢出错误的对象类型。

underflow_error:underflow_error 类定义了作为异常抛出的对象类型,以报告算术下溢错误

对于您的函数,最合适的是 out_of_range

关于c++ - out_of_range、range_error 和 over/underflow_error 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22978863/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com