如何包装do
catch
溢出错误
let increasePerSecond: UInt32 = UInt32.max
let offset: UInt32
do {
offset = try ((nowTimeInterval - calculatedTimeInterval) * increasePerInterval)
} catch _ {
offset = 0
}
但是如果我在do
部分出错,我就没有进入catch
而且我的应用程序崩溃了
UPD :它不是关于如何获得var offset,问题是如何处理错误?
答案 0 :(得分: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")
}