Swift 一定要抓住并溢出

Swift 一定要抓住并溢出,swift,do-catch,Swift,Do Catch,如何包装do捕获溢出错误 let increasePerSecond: UInt32 = UInt32.max let offset: UInt32 do { offset = try ((nowTimeInterval - calculatedTimeInterval) * increasePerInterval) } catch _ { offset = 0 } 但如果我在do部分出错,我就不会进入catch并使我的

如何包装
do
捕获溢出错误

    let increasePerSecond: UInt32 = UInt32.max 
    let offset: UInt32
    do {
        offset = try ((nowTimeInterval - calculatedTimeInterval) * increasePerInterval)
    } catch _ {
        offset = 0
    }
但如果我在
do
部分出错,我就不会进入
catch
并使我的应用程序崩溃


UPD:问题不在于如何获得var偏移量,问题是如何处理错误?

整数算术中的溢出不会抛出错误,因此您无法捕获它。如果你 要检测和处理溢出,可以使用
…WithOverflow
整数类型的方法。例如:

let a = UInt32.max
let b = UInt32(2)

if case let (result, overflow) = UInt32.multiplyWithOverflow(a, b), !overflow {
    print(result)
} else {
    print("overflow")
}

您是否尝试过将
((nowTimeInterval-calculatedTimeInterval)*increasePerInterval)
显式转换为UInt32?问题不在于如何获得var偏移量,而在于如何处理错误您应该让问题更清楚。很难理解你的实际问题是什么。例如,“处理错误”可能和打印错误一样简单,所以我怀疑这就是你的意思。双精度类型如何?@EvGeniyIlyin:如果浮点乘法溢出,则结果为“inf”,因此你可以检查
If result.isFinite