1

我如何包装do catch溢出错误

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

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

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

4

1 回答 1

2

整数运算中的溢出不是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")
}
于 2017-02-02T13:05:30.587 回答