Do-Catch 和溢出

Do-Catch and overflow

如何在 do catch 溢出错误中换行

    let increasePerSecond: UInt32 = UInt32.max 
    let offset: UInt32
    do {
        offset = try ((nowTimeInterval - calculatedTimeInterval) * increasePerInterval)
    } catch _ {
        offset = 0
    }

但是,如果我在 do 部分出现错误,我将无法进入 catch 并使我的应用程序崩溃

UPD: 这不是关于如何获取 var 偏移量的问题,问题是如何处理错误 ?

整数运算中的溢出不会throw错误,因此您不能catch它。如果你 想要检测和处理溢出,您可以使用 ...WithOverflow 之一 整数类型的方法。示例:

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

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