如果您要开发的应用程序需要进行大量的数学计算,则可能希望能够在错误扩散到各处之前捕获错误,例如被零除和整数类型溢出。
浮点错误包括被零除(产生±infinity )和未定义( NaN )表达式,例如sin(Double.infinity) 。 这些无声地失败了。 整数类型的运算符错误仅限于溢出,这会使您的代码大声崩溃。
Swift提供了方便的整数算术运算符,允许溢出; &+ , &− , &*以及更多有用的方法,例如addWithOverflow(_,_) 。 我利用这些方法来定义抛出运算符&& + , &&- , && * , && / , &&%和&&? 。 用法如下。
/ * *示例。 * /
//产生15.27543444817377 func x()throws-> Double { 返回尝试(12.5 && + 2.3) && /(&&?sin(3.1)&& + &&? atan2(4,3)) }
//引发ArithmeticOperationError(.infinity,.division) func y()throws-> Double { 让y =试试(1.0 && + 1.0) && /(&&?sin(M_PI_2)&&-1.0) }