std.overflow

功能介绍

overflow 包提供了整数运算溢出时的处理能力。

在整数运算时,若运算结果大于其类型最大值或小于其类型最小值即是溢出。默认情况下,出现溢出时会抛出异常。

overflow 包提供了四种溢出处理策略,并定义了对应的接口,列举如下:

策略 接口 描述
返回 Option CheckedOp 当整数运算出现溢出,返回 None
饱和 SaturatingOp 当计算结果大于目标类型的 MAX 值,返回 MAX 值;当计算结果小于目标类型的 MIN 值,返回 MIN 值。
抛出异常 ThrowingOp 当整数运算出现溢出,抛出异常。
高位截断 WrappingOp 当整数运算出现溢出,将运算结果中超出目标类型位数的高位截断。

overflow 包中通过扩展为所有的整数类型提供了这些接口的实现,用户可以用同样的方式为其他类型实现 overflow 接口。

API 列表

接口

接口名 功能
CarryingOp 提供返回整数运算是否发生了截断以及运算结果的接口。
CarryingPow 提供使用 wrapping 策略的幂运算接口。
CheckedOp 当整数运算出现溢出,返回 None
CheckedPow 提供返回 Option 策略的幂运算接口。
SaturatingOp 当整数运算出现溢出,饱和处理。
SaturatingPow 提供饱和策略的幂运算接口。
ThrowingOp 当整数运算出现溢出,抛出异常。
ThrowingPow 提供使用抛出异常策略的幂运算接口。
WrappingOp 当整数运算出现溢出,将运算结果中超出目标类型位数的高位截断。
WrappingPow 提供使用高位截断策略的幂运算接口。

异常类

类名 功能
OvershiftException 移位运算时移位位数超过操作数位数时抛出的异常。
UndershiftException 移位运算时移位位数小于 0 时抛出的异常。