std.overflow 包
功能介绍
overflow 包提供了整数运算溢出时的处理能力。
在整数运算时,若运算结果大于其类型最大值或小于其类型最小值即是溢出。默认情况下,出现溢出时会抛出异常。
overflow 包提供了四种溢出处理策略,并定义了对应的接口,列举如下:
| 策略 | 接口 | 描述 |
|---|---|---|
| 返回 Option | CheckedOp | 当整数运算出现溢出,返回 None。 |
| 饱和 | SaturatingOp | 当计算结果大于目标类型的 MAX 值,返回 MAX 值;当计算结果小于目标类型的 MIN 值,返回 MIN 值。 |
| 抛出异常 | ThrowingOp | 当整数运算出现溢出,抛出异常。 |
| 高位截断 | WrappingOp | 当整数运算出现溢出,将运算结果中超出目标类型位数的高位截断。 |
overflow 包中通过扩展为所有的整数类型提供了这些接口的实现,用户可以用同样的方式为其他类型实现 overflow 接口。
API 列表
接口
| 接口名 | 功能 |
|---|---|
| CheckedOp | 当整数运算出现溢出,返回 None。 |
| SaturatingOp | 当整数运算出现溢出,饱和处理。 |
| ThrowingOp | 当整数运算出现溢出,抛出异常。 |
| WrappingOp | 当整数运算出现溢出,将运算结果中超出目标类型位数的高位截断。 |
异常类
| 类名 | 功能 |
|---|---|
| OvershiftException | 移位运算时移位位数超过操作数位数时抛出的异常。 |
| UndershiftException | 移位运算时移位位数小于 0 时抛出的异常。 |